scpで公開鍵認証

「ネットワーク越しにファイルのコピーがしたい」
 さらには
「パスワードもいちいち入力せずに行ないたい」

という場合は、公開鍵認証を使ってscp

scp -i 秘密鍵 コピーしたいファイルパス 受取先パス

例)example.netのdb.dumpのコピーを取得(example.comexample.net間のやりとり)

scp -i /home/admin/.ssh/id_rsa admin@example.net:/home/admin/db.dump /home/admin/

こんな感じで取得できるように、以下設定


①クライアント側で秘密鍵と公開鍵のペアを作成(ssh-keygen)

[admin@example.com .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
98:9c:7f:4b:2e:6d:56:36:09:10:be:d2:f7:39:a1:2f admin@example.com

※とりあえずpassphraseは何も設定せずにEnter

[admin@example.com .ssh]$ ll
total 32
-rw------- 1 admin admin 1268 Dec 25  2009 authorized_keys
-rw------- 1 admin admin 1675 Sep 13 18:33 id_rsa
-rw-r--r-- 1 admin admin  407 Sep 13 18:33 id_rsa.pub
-rw-r--r-- 1 admin admin  813 Sep 13 17:58 known_hosts

→id_rsaとid_rsa.pubができました


②相手先(example.net)のauthorized_keysに自分が作った公開鍵(id_rsa.pub)を登録

[admin@example.net:~/.ssh]$ scp admin@example.com:/home/admin/.ssh/id_rsa.pub .
admin@example.com's password:
id_rsa.pub                                                                                                                                                                      100%  407     0.4KB/s   00:00

取得してきて、追記 ※ファイルを送らず、中身を直接書き込んでもOK

[admin@example.net:~/.ssh]$ cat id_rsa.pub >> authorized_keys

→登録完了

scp -i /home/admin/.ssh/id_rsa admin@example.net:/home/admin/db.dump /home/admin/

→/home/admin/にdb.dumpが取得できました。

※これでそのままcrontabにコマンド登録とかしても大丈夫


P.S.
前提として、アクセス制限はお互いに許可してあるものとします
/etc/hosts.allowにて
sshd: xxx.xxx.xxx.xxx