TeratermでSSH接続時の公開鍵認証を設定する


はじめに

サーバーについてあまりにも知識が無さ過ぎたので、「さくらのVPS」でVPSサーバーを借り、実際に触ってみることにしました。「公開鍵認証」の仕組み・やり方がよくわからずかなり苦戦したので、記録も兼ねてここにまとめます。

環境

・さくらのVPS
・CentOS Linux release 7.8.2003

公開鍵認証とは

サーバーへのログインをパスワード認証で行うと、パスワードが割れれば第三者がログインできるので危険だが、公開鍵認証を使えば、パスワードを使わず、安全にログインすることができる。
公開鍵認証は、公開鍵と秘密鍵のペアを生成・使用することで行われる。二つの鍵には以下の特徴がある。

・秘密鍵がないと署名が作れない
・公開鍵で(対応した秘密鍵による)正しい署名かどうか検証できる

クライアント側で公開鍵と秘密鍵を生成した後、公開鍵は接続先サーバーに登録し、秘密鍵はクライアント側のみが保管する。ログイン時、サーバーに登録されている公開鍵と、クライアントが提示した秘密鍵が適合すれば、ログインが成功する。

実際の手順

公開鍵・秘密鍵の生成

ここからは、「Tera Term」を使用してやっていきます。TeraTermは https://ja.osdn.net/projects/ttssh2/ からダウンロードできます。
 
(1)「TeraTerm」の設定メニューの「SSH鍵生成」をクリックする。

(2)以下の画面が表示されるので、「生成」をクリックする。

(3)「生成」を実行すると画面下部の「パスフレーズ」、「コメント」を入力できる状態になる。(パスフレーズはログイン時、秘密鍵を使用する際に入力を求められる。一応空欄でも生成は可能。)
 

(4)最後に、画面下部の「公開鍵の保存」「秘密鍵の保存」をそれぞれクリックして、鍵を保存する。
※ 「id_rsa.pub」が公開鍵、「id_rsa」が秘密鍵。
 

公開鍵の登録 

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

(2)公開鍵をサーバー内のディレクトリに送ったが、まだ登録はできていない。以下のコマンドで、公開鍵を~/.ssh/authorized_keysファイルに登録する。

$ cat id_rsa.pub >> .ssh/authorized_keys

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

$ chmod 600 .ssh/authorized_keys

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

パスワード認証を無効にする

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

# vim /etc/ssh/sshd_config

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

PasswordAuthentication yes → PasswordAuthentication no

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

# systemctl reload sshd.service

 
※ 鍵認証の設定がうまくいってないと、パスワード認証を無効化した時点でTeraTermからはログインできなくなる。その場合はVNCコンソールからログインして/etc/ssh/sshd_configの変更箇所を元に戻す。