scpで公開鍵認証
「ネットワーク越しにファイルのコピーがしたい」
さらには
「パスワードもいちいち入力せずに行ないたい」
という場合は、公開鍵認証を使ってscp
scp -i 秘密鍵 コピーしたいファイルパス 受取先パス
例)example.netのdb.dumpのコピーを取得(example.com⇔example.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
②相手先(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