この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
パスフレーズなしでSCPをする方法としてはssh-agentを使う方法や、 秘密鍵を使う方法がありますが、今回は後者の秘密鍵を使う方法をご紹介します。
まず転送先のサーバで秘密鍵と公開鍵を作成します。
ここでポイントなのが秘密鍵はパスワードなしで作成するということ。
パスワードなしでも秘密鍵自体を盗まれなければ危険はありません。
(転送先での作業)
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa):
Created directory ‘/home/hoge/.ssh’.
Enter passphrase (empty for no passphrase): (未入力でEnter)
Enter same passphrase again: (未入力でEnter)
Your identification has been saved in /home/hoge/.ssh/id_rsa.
Your public key has been saved in /home/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
6e:f3:a4:af:aa:84:9f:d3:b2:92:84:69:34:10:21:b9 hoge@scp-to
次に作成した公開鍵(id_rsa.pub)を転送元に設定します。
※安全のため、公開鍵を設定するauthorized_keys2のパーミッションは、所有者に対しては read/write を許可し、他のユーザーには、アクセスを許可しないで下さい。
(転送元での作業)
$ vi ~/.ssh/authorized_keys2
### id_rsa.pubの内容をコピペ ###
ssh-rsa ****************************
$ chmod 600 ~/.ssh/authorized_keys2
これでパスフレーズなしでSCPができるはずです。
試してみます。
(転送元での作業)
$ echo “scp test” > /var/tmp/scp-test.txt
$ scp /var/tmp/scp-test.txt hoge@scp-to:/var/tmp
scp-test.txt 100% ****************************| 9 00:00
できました!