AC-5

某SEの雑記帳

SSHで公開鍵認証でログインできるようにする

      2016/02/22

SSHログインの方法には、パスワード認証方式と公開鍵認証方式があります。

セキュリティ的には、本来はIPアドレス制限等をかけたいところですが、
個人宅で固定IPを取得している家はほとんど無く、
パスワード認証方式はユーザ名とパスワードの組み合わせが分かればログインできてしまうため、
公開鍵認証方式を利用するのが望ましいと思います。

キーペアの作成

[testuser@test]$ ssh-keygen -t rsa←キーペアの作成コマンド
Generating public/private rsa key pair.
Enter file in which to save the key (/home/testuser/.ssh/id_rsa):←作成する場所を聞かれるので空Enter
Enter passphrase (empty for no passphrase):←パスワードを入力する(空(パスワード無し)も可能)
Enter same passphrase again:←再度パスワードを入力する
Your identification has been saved in /home/testuser/.ssh/id_rsa.
Your public key has been saved in /home/testuser/.ssh/id_rsa.pub.
The key fingerprint is:
77:50:05:7a:c2:1c:b0:ae:73:02:cd:9e:bb:3d:88:bf testuser@test
The key's randomart image is:
+--[ RSA 2048]----+
|     .*S .. oo.  |
|o .      + +     |
|        . * .    |
|     o .   +     |
|    . o . . .    |
|     o o . .     |
|     .*S .       |
|    . .*.        |
|     .Eo..       |
+-----------------+
[testuser@test]$ cd ~/.ssh/←キーペアの作成されたディレクトリに移動
[testuser@test]$ ls←ディレクトリの中を確認
id_rsa  id_rsa.pub←キーペアが作成されました。

キーペア作成時のパスワードは空でも作る事はできますが、証明書とパスワードの2段構えの方がセキュリティ的に向上します。
次に下記のコマンドを実行して、公開鍵を公開鍵認証で利用できるようにします。

[testuser@test]$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys←公開鍵をauthorized_keysにリネーム
[testuser@test]$ chmod 600  ~/.ssh/authorized_keys←公開鍵のパーミッションを変更

公開鍵認証でログインできるようにする

rootに切り替えてから、下記の設定ファイルを変更します。

[testuser@test /]$ su←rootに切り替える
Password:
[root@test]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_default←バックアップとしてコピーを取っておく
[root@test]# vi /etc/ssh/sshd_config←設定ファイルの編集
#PubkeyAuthentication yes
↓
PubkeyAuthentication yes←コメントアウトを外す

保存して閉じたら、サービスを再起動します。

[root@test]# service sshd restart←sshdの再起動

一旦ログアウトします。

秘密鍵のダウンロード

FileZillaWinSCPなどの、SFTPやSCPのクライアントソフトを利用して、サーバに接続し、キーペアの作成されたディレクトリ[~/.ssh/]へ移動して、id_rsaファイルをダウンロードします。
ダウンロードしたら、id_rsaファイルは削除してしまって大丈夫です。
※鍵をローカルに移動させる場合に、インターネットを介してダウンロードするのは良くないという意見もありますが、SCPやSFTPを利用する事で暗号化通信ができており、別記事のAWSIDCFクラウドでもダウンロードさせる事が普及している為、問題無いと思います。

SSH接続確認

AWS EC2へのSSH接続(Windows編)AWS EC2へのSSH接続(Mac編)とほぼ同様の手順でできると思います。
キーペア作成時にパスワードを入力した場合は、作成したパスワードで接続します。

公開鍵認証のみでの接続に制限する

公開鍵認証で接続できる事が確認できたので、パスワード認証での接続は不可にしてください。

[root@test]# vi /etc/ssh/sshd_config←sshd設定ファイルを編集
#PasswordAuthentication yes
↓
PasswordAuthentication no←コメントアウトを外し、noに変える
保存してviを終了
[root@test]# service sshd restart

ログアウトして、パスワード認証によるログインが拒否されれば完了です。

 - Linux