LinuxサーバにSSH接続するときに、パスワードなしの鍵交換方式でログインするように設定する手順です。
この方式にすると、パスワードなしで鍵ファイルを持っている人だけがサーバにログインできるようになりセキュリティが向上します。こちらの記事で、パスワードでのログインを禁止する方法を紹介しています。
また、SCPでバックアップ取るときなどにも、利用することができます。
AWSのEC2なんかもこの方法を使ってログインするようになっています。今回はこの設定手順を紹介いたします。
■接続元端末での作業
まずは以下の作業を接続元の端末で作業をします。
▼ssh-keygenで鍵の作成して、ファイルの内容をコピーする
対象ユーザでログインしてから以下のコマンドを実行し、鍵ファイルを作成します。この鍵ファイルはパスワードなしの鍵ファイルとなります。
ssh-keygen -t rsa
色々と設定を聞かれますが、すべてEnterを押してしまっていいです。これでパスワードなしの鍵が作成されます。上記コマンドを実行すると対象ユーザの~/.sshフォルダ内に以下のファイルが作成されます。
id_rsa
id_rsa.pub
上記ファイルのうち、id_rsa.pubを接続先のサーバへコピーします。ファイルをダウンロードしてもいいですし、vi等のエディタでファイルを開いて内容をコピーしてもいいです。
また、このid_rsa.pubは削除しないほうがよいです。別の接続先からも同様に鍵交換形式でログインするようになったときに、このid_rsa.pubファイルを再利用します。
■接続先での作業
ログインしたいユーザでログインして、接続元で作成したid_rsa.pubを配置します。このid_rsa.pubをコピーする作業は、以下の記事で作業を自動化できる方法を紹介しています。
▼ディレクトリを作り、アクセス権限を変更する
.sshディレクトリがユーザのホームディレクトリになければ作ります。この時必ず chmod 700 .ssh します。このディレクトリの権限が少しでも間違っていると正しくログインできなくなります。
▼作成した.sshディレクトリにauthorized_keys2というファイルを作成する
authorized_keys2というファイルを作成し、 id_rsa.pubの内容をペーストします。ファイルをダウンロードした場合は、移動やコピーでも問題ありません。
▼authorized_keys2のファイルの権限を変更
以下のコマンドを実行して、ファイルの権限を600に変更します。
chmod 600 authorized_keys2
ディレクトリと同様にとauthorized_key2の権限を間違うと正しくログインできません。
■接続元からログインできるか確認する
sshコマンドでパスワードなしでログインできるか確認します。
これで、パスワードなしの接続ができるようになります。これでSCP等でパスワードなしで実行することができます。参考にしてみてください。
では。