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の再起動
一旦ログアウトします。
秘密鍵のダウンロード
FileZillaやWinSCPなどの、SFTPやSCPのクライアントソフトを利用して、サーバに接続し、キーペアの作成されたディレクトリ[~/.ssh/]へ移動して、id_rsaファイルをダウンロードします。
ダウンロードしたら、id_rsaファイルは削除してしまって大丈夫です。
※鍵をローカルに移動させる場合に、インターネットを介してダウンロードするのは良くないという意見もありますが、SCPやSFTPを利用する事で暗号化通信ができており、別記事のAWSやIDCFクラウドでもダウンロードさせる事が普及している為、問題無いと思います。
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
ログアウトして、パスワード認証によるログインが拒否されれば完了です。