【ssh-keygen】認証鍵でリモートコンピューターへSSH接続する方法を解説!

Linux

(最終更新月:2021年10月)

リモートコンピューターやgithubへのアクセスでSSH接続はよく使われますが、その際に

「セキュリティが気になる!」

「いちいちパスワードの入力が面倒くさい!」

という方も多いのではないでしょうか?

当記事では、SSH接続でパスワード入力を不要とする

  • 認証鍵によってSSH接続する方法

について解説します

「そもそもSSH接続ってなに?」という方は、↓の記事をご覧いただいてから次章へとお進みください

筆者プロフィール

筆者プロフィールアイコン

【現職】プロマネ/システムプランニング

【副業】ブログ(月間7万PV)/YouTube/Web・アプリ制作

【元】外資系金融機関の営業

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

認証キーによるSSH接続のメリット

認証キーによるSSH接続のメリットは、

  • パスワード無しでアクセスできる
  • 登録したパソコンでのみアクセス可能となるためより安全性が高い

などが挙げられます

早速みていきましょう!

認証キーとは?

例えていうと、デジタルな割符という表現が一番わかりやすいでしょうか

仕組みとしては、公開鍵を接続先のリモートコンピューターへ渡します(※秘密鍵を渡すことはありません)

SSH接続を試みると、自動的に手持ちの秘密鍵と接続先の公開鍵を照合します

鍵が問題ないとされた場合のみ「認証」となります

認証キーペアを作成する

ローカルコンピューターでターミナル(コマンドプロンプト)を開き、実行していきます

鍵の保存場所

ホームディレクトリ内の「.ssh」フォルダが一般的です

フォルダが存在しない場合は作成し、フォルダへ移動しましょう

【.sshフォルダがある場合】

$ cd ~/.ssh

【.sshフォルダが無い場合】

$ cd ~ && mkdir .ssh && cd .ssh

エラーが出る場合は、

$ chmod 700 ~/.ssh

でアクセス権限を正しいものに変更しよう

いざ、作成!

ssh-keygenコマンドで作成します

$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/xxx/xxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /xxx/xxx/.ssh/id_rsa.
Your public key has been saved in /xxx/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Y7ibSE3/fsxxsxxAjqvrGPVuCxxxxxxxxxx username@computername.local

何度か入力を求められますが、全てEnterでスキップして構いません

id_rsa.pubとid_rsaの違い

フォルダ内を見てみると、

authorized_keys id_rsa id_rsa.pub

「id_rsa」「id_rsa.pub」というファイルが新たに作られているのがわかります(※「authorized_keys」は元からあるものとします)

公開鍵は「.pub」のつく、

id_rsa.pub

ですので、覚えておきましょう!

以上で作成は完了しました

接続先での設定をみていきましょう

接続先サーバーで公開鍵を設定する

接続先により、公開鍵の設定方法は変わります

クラウドサービス等

githubやDigitalOceanであれば、アカウント設定などにSSH Keysを入力するフォームが存在します

【githubでの例】

githubページ > Account settings

$ cat id_rsa.pub

などでローカルコンピューターの公開鍵を出力し、コピペして完了です!

設定画面などがない場合

リモートコンピューター内で下記のフォルダ、ファイルを作成し、公開鍵をコピペする必要があります

保存場所

ホームディレクトリ内の.sshフォルダ(ローカルコンピューターのときと同じです!)

ファイル名

「authorized_keys」

やること

authorized_keys」内へローカルコンピューターの公開鍵をコピペしましょう!

接続してみる

githubなどのサービスであれば、実際に使ってみる、もしくはリモートコンピューターに対してであれば、ターミナル上で、

$ ssh <username>@<IPアドレス、もしくはドメインネーム>

例えば、

$ ssh ubuntu@192.168.11.14

などと入力してみます

正しく設定されていれば、パスワードを入力せずに接続が完了します!

いかがでしょうか?

まとめ

公開鍵によるSSH接続を活用すると、

パスワード流出の恐れがない

パスワード入力の手間が省ける

と、安全にWebサーバーへアクセスが可能です

当記事での設定完了後には、パスワードでのログインを不可とすることもオススメです

【パスワードログインを無効にする】

$ sudo nano /etc/ssh/ssh_config

でssh_configへアクセスし、

# PasswordAuthentication yes

を、

PasswordAuthenication no

に変えましょう

ただこれについては、きちんと認証鍵でのアクセスが問題ないことが確認できてから行うことを忘れずに!

✔当ブログは以下のような方に向けて書かれています

「Djangoでのアプリ開発を学びたい!」

「Djangoで開発したアプリをWebで公開するにはどうするの?」

✔当ブログ掲載の記事

  • Djangoで作る日報アプリ開発
  • WebアプリをWeb上に公開する方法
  • Webアプリ開発に必要なそのほかの情報
【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。

ITCへ投げ銭をする

タイトルとURLをコピーしました