MENU

【CentOS】TeraTermでSSH接続時の公開鍵認証を設定する。

こんにちは、くまごろーです。
先日CentOSの初期設定について書いたんですが、「鍵認証」についてもっと簡単でわかりやすい方法があったので
あらためて記事を作ってまとめようと思います。
 
 
 
1 そもそも公開鍵認証とは
 サーバーへのログインをパスワード認証で行うと、パスワードが割れれば第三者がログインできるので好ましくない。公開鍵認証を使えば、パスワードを使わず、安全にログインすることができる。
 公開鍵認証は、公開鍵と秘密鍵のペアを使用することで行われる。クライアント側で公開鍵と秘密鍵を生成した後、公開鍵は接続先サーバーに登録し、クライアント側は秘密鍵を持っておく。(この仕組みが最初全然理解できなかった・・・)
 ログイン時、サーバーに登録されている公開鍵と、クライアントが提示した秘密鍵が適合すれば、ログインが成功する。

 

2 公開鍵・秘密鍵の生成
 ここからは、「Tera Term」を使用してやっていきます。
 
 「Tera Term」定番のターミナルエミュレーター - 窓の杜
 
※ TeraTermには鍵を生成する機能があり、コマンドを入力しなくても公開鍵・秘密鍵を生成できます。
 
 
(1)「TeraTerm」の設定メニューの「SSH鍵生成」をクリックする。
 

f:id:kumaGoro_95:20200911154200p:plain
SSH鍵生成

(2)すると、↓のような画面が表示されるので、「生成」をクリックする。
 
f:id:kumaGoro_95:20200911154316p:plain
 
(3)「生成」を実行すると画面下部の「パスフレーズ」、「コメント」を入力できる状態になる。(パスフレーズはログイン時、秘密鍵を使用する際に入力を求められる。一応空欄でも生成は可能。)
 ※ ちなみに、私の場合パスフレーズを設定するとログイン時にエラーが出てログインできませんでした(-"-)パスフレーズ無しでやってみたらログインできました。原因は不明
 
 
(4)最後に、画面下部の「公開鍵の保存」「秘密鍵の保存」をそれぞれクリックして、鍵を保存する。(自分のローカル環境のフォルダで問題ありません。)
 ※ 「id_rsa.pub」が公開鍵、「id_rsa」が秘密鍵です。


 
3 公開鍵の登録
 
(1)次に、公開鍵をサーバー側に登録する。TeraTermでサーバーにログインし、「id_rsa.pub」TeraTermウィンドウ上にドラッグ&ドロップする。↓様なウィンドウが表示されるので、任意のフォルダを設定して「送信」ボタンを押す。
 

f:id:kumaGoro_95:20200911164816p:plain
「~/」でホームディレクトリに送られます
 
(2)公開鍵をサーバー内のディレクトリに送ることができたが、まだ登録はできていない。以下のコマンドで、公開鍵を「~/.ssh/authorized_keys」ファイルに登録する。

$ cat id_rsa.pub >> .ssh/authorized_keys

 そして、authorized_keysのアクセス権を変更する。(所有者以外がアクセスできないようにする。)

$ chmod 600 .ssh/authorized_keys

 
 以上で鍵の登録は完了。これで、秘密鍵を使用してログインできるようになっているはず。SSH認証画面で、「RSA/DSA/ECDSA/ED25519」にチェックを入れ、生成した秘密鍵を指定する。それでログインできればOK。

f:id:kumaGoro_95:20200911160545p:plain
秘密鍵を指定する

 
 
4 パスワード認証ではログインできないようにする
  
 最後に、パスワードではログインできないよう設定を変更する。
 以下のコマンド入力して「/etc/ssh/sshd_config」ファイルの編集画面を開く。
 

$ sudo vim /etc/ssh/sshd_config

 
 このファイルの以下の部分を変更する。
 

PasswordAuthentication yes → PasswordAuthentication no

 
 変更後ファイルを保存したら、設定を再読込する。
 

$ sudo systemctl reload sshd.service

 
※ ちなみに、鍵認証の設定がうまくいってないと、3を実行した時点でTeraTermからVPSにはログインできなくなってしまいます。そうなったらVNCコンソールからログインして変更した箇所を元に戻せば復旧できます。(私も一度やってしまいました('_'))