スクリプト等でサーバーからファイルを取得する際、パスワードを訊かれて処理を止めないようにする方法です。
scpコマンドと公開鍵認証方式を使います。

前提:
sshがインストール済みであること。
未インストール場合はこちらの記事を参考にサーバー・クライアント両方にインストールしておいてください。

公開鍵認証方式でファイルコピーするための準備:
 ssh-keygen -t rsa ←色々訊かれるが、パスワード無しにする場合は全てエンター
 ssh-copy-id -i ~/.ssh/id_rsa.pub コピー相手のアカウント名@コピー相手のIPアドレス ←公開鍵をクライアントへコピー(*1

*1 ssh-copy-idコマンドがインストールされていない場合は、手動で公開鍵を相手サーバに送ります。
  方法:相手サーバのアカウントの~/.ssh/authorized_keysに、
  ssh-keygenで作成した~/.ssh/id_rsa.pubの内容をコピー&ペースト

上記の操作を、コピーする相手同士でそれぞれ実施します。
つまり、公開鍵を教えあいます。(*2)

*2 単方向でしか通信しない場合(例えば片方のサーバー側からscpでファイルを持ってくるor送信するだけで、相手サーバー側からは何もしない場合)、通信される側のサーバーは、公開鍵を相手に送る必要はありません。

ファイルコピー操作(持ってくる方向):
scp コピー元アカウント名@コピー元IPアドレス:コピー元ファイル名 コピー先ファイル名 
例)
scp test_user1@192.168.xxx.xxx:~/scptest.txt .

例では、通信相手サーバー192.168.xxx.xxxのtest_user1アカウントから見たパスの~/scptest.txtを、scpコマンドを実行したサーバーのカレントディレクトリに取得します。
パスワードを訊かれずにファイルが取得できれば成功です。
コピーする方向を逆にする場合(送る方向)は、赤い部分と黄色い部分の引数を逆にするだけです。
scpコマンドは以下のように、cpコマンドと同様「コピー元」「コピー先」の順番で指定すると覚えましょう。

scp コピー元 コピー先
 
スポンサードリンク