パスワード入力なしでsshログイン(鍵認証でログイン)

 cronなどでrsyncやscpを定期実行したいとき、sshのアクセスをパスワードなしで自動化させたい場合は、鍵認証を仕掛けておくのが定番である。専用のユーザーを作って処理するのが良いが、簡単にrootで実行したときの手順としては以下のとおり。

1 クライアント側でssh-keygenコマンドで秘密鍵と公開鍵を生成

# ssh-keygen                                                                                                                                    
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@IPアドレス
The key's randomart image is:
+--[ RSA 2048]----+
|      o . ...    |
|     o * o .     |
|    . * o + o    |
|     o . . + o   |
|    o   S . . .  |
|   o = o . o .   |
|    o + E . .    |
|                 |
|                 |
+-----------------+

/root/.ssh/id_rsaと/root/.ssh/id_rsa.pubが生成される。

2 公開鍵である/root/.ssh/id_rsa.pubをログインしたいサーバーへ転送

# scp /root/.ssh/id_rsa.pub サーバーIPアドレス:~

3 サーバーにログインして公開鍵を所定の場所にセット

# ssh サーバー
(# mkdir .ssh)
(# chmod 700 .ssh)
# cat id_rsa.pub >> .ssh/authorized_keys
# vi .ssh/authorized_keys
(念のため、鍵の最後にあるホスト名をIPアドレスに書き換えておく)
# rm id_rsa.pub

 以上で、パスワードなし、鍵認証でsshログインできるようになる。