プレインテキスト(パスワード)による認証ではセキュリティ上問題があるので、公開鍵方式へ変更する。
参考手順 「さくらのVPS」の 「SSH接続の設定変更方法」
公開鍵方式の簡単な解説は同じく、「よく分かる公開鍵認証」
以下実際にやってみた手順
1.公開鍵・秘密鍵の作成
まずTeratermを使用して、リモートサーバーへ接続する。
通常のsshで接続画面を立ち上げ、一度キャンセルボタンを押す。
設定 「SSH鍵生成」 から
RSA ビット数 2048の既定値のまま鍵の生成を行う。
「鍵を生成しました」と表示後、「鍵のパスフレーズ」「パスフレーズの確認」を入力。 このフレーズは好きなもので可、ただし忘れないように。
このパスフレーズは、秘密鍵を開くためのフレーズで、ログイン時に使用。
パスフレーズを入れると公開鍵の保存、秘密鍵の保存ボタンが有効になり、それぞれ保存を行う。
保存先は、前もって作成した「c:¥認証」フォルダ。
公開鍵 | C:¥認証¥id_rsa.pub |
秘密鍵 | C:¥認証¥id_rsa |
2.VPSリモートサーバーへの公開鍵のコピー
TeraTermから一般ユーザー(tako)としてサーバーへログイン
サーバーにログイン後、作成した「公開鍵」のファイルid_rsa.pubをTeraTermの窓にドラック&ドロップ。
SCPでファイル転送を行うか聞いてくるので、OKを押す。
これで、公開鍵ファイル id_rsa.pub がサーバーのユーザー(tako)のホームディレクトリ /home/tako へコピーされる。
この後も、「SSH接続の設定変更方法」 に従い以下のコマンドでサーバーにコピーした公開鍵を有効にする。
$ mkdir .ssh
$ chmod 700 .ssh
$ cat id_rsa.pub > .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub
つまり、ユーザーディレクトリ /home/takoに.sshフォルダを作成し、その中にid_rsa.pubをauthorized_keysに名前を変えて移動し、それぞれ600と700の権限を与えている。
sshdの設定ファイル/etc/ssh/sshd_configを見ると、各ユーザー公開鍵の保存場所とファイル名は、これが既定値(ディフォルト)だとわかる。
AuthorizedKeysFile .ssh/authorized_keys
3.SSH接続の設定変更
さらに、/etc/ssh/sshd_configを編集して、追加の設定変更を行う。
編集内容 | 修正目的 |
---|---|
#Port22→Port **** | コメントアウト「#」を削除後、SSH接続のportを22から****に変更 今回は61001に |
#PermitRootLogin yes →PermitRootLogin no |
コメントアウト「#」を削除後、”yes”を”no”に変更する rootユーザでのログインを無効にする |
PasswordAuthentication yes →PasswordAuthentication no |
“yes”を”no”に変更する 通常のパスワード認証(プレインテキスト認証)を無効にする これで公開鍵認証だけになる |
4.sshの再起動
次のコマンドでsshdサービスの再起動をおこなう。 CentOS7からはサービス関係のコマンドが 「systemctl」 に変わっている。
# systemctl daemon_reload 設定ファイルの再読込
# systemctl restart sshd sshdサービス再起動
5.ポート変更後の公開鍵認証でのログイン
/etc/ssh/sshd_configを編集してTCPポート番号を変えたので、22から番号を61001に変更。
ホストのアドレス:***.***.***.*** TCPポート:61001
一度キャンセルを押して、メニューの設定からSSH認証設定を開き、ディフォルトユーザ名、秘密鍵の場所を指定。
ディフォルトユーザ名 | 秘密鍵 |
---|---|
tako | C:¥認証¥id_rsa |
再度ログイン
設定に問題が無ければ次のSSH認証画面がでる。
鍵の生成時に決めた「鍵のパスフレーズ」をここで、入れて秘密鍵を読めるようにする。
OKを押して問題がなければ、下のログイン画面がでるはずなのだが。
失敗
残念ながら、このままでは接続できなかった。 さくらのVPSのコントロールパネルを見れば分かるのだが、初期状態ではパケットフィルタが有効になっていて Port :22 のみが開放されているからだ。
Port:61001 を使わずに 22 のままであれば繋がったはずなのだが。
やむを得ず、ファイヤーウォールの設定を行うことに。