#はじめに
サーバーについてあまりにも知識が無さ過ぎたので、「さくらの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
の変更箇所を元に戻す。