私は3つのLinuxサーバーを持っています。 1つ目は開発マシン(バイナリをコンパイルする場所)、2つ目は「テストベッド」に接続するのに役立つ「ジャンプボックス」です。ここではバイナリをコピーする必要があります。
今私は次のようなことをしています。
1) scp -r binabc@jumpbox:/temp/ を使用して、マイバイナリをdevmachineからJumpboxにコピーします。
2) Jumpbox にログインし、scp -r bin abc@testbed:/bin/ を使用して Jumpbok からテストベッドにバイナリファイルをコピーします。
1つのスクリプトで上記の2つの手順を実行する方法はありますか?
これを行うには、パスワードをファイルに保存する必要があることを知っていますが、それでも問題ありません。いつでも暗号化を使用できます。
答え1
最も簡単なオプションはSSH接続を行うことです公開鍵認証ではパスワードは必要ありません。。これは、サーバー間で公開鍵を共有する必要があることを意味します。
その後、「オリジナル」サーバーで同様のコマンドを使用できます。
cat file | ssh user@serverA "ssh user@serverB \"cat > file\""
答え2
SSH用の公開/秘密鍵を使用してパスワードのないログインを設定する必要があります。
次に、コピーするファイルがにあるとしますdir
。
source$ tar cf - dir | ssh servera 'ssh serverb "cd dest ; tar xf - " '
どこ
source$
プロンプトを表示しますか?tar cf - dir
dirのtarファイルをstdinにコピーするssh servera
serveraにログインしてください。cd dest ; tar xf -
dest ディレクトリの標準入力ファイルから抽出されます。