SSH経由で接続するRSyncジョブをセットアップしたい。
コンピューター(backup @ myhost)とリモートホスト(test @ remhost)があり、フォルダー〜/ somethingのすべての内容をバックアップする必要があります。 sshユーザーテストには、〜/フォルダー内のすべてのファイルとフォルダーに対する読み取りアクセス権のみがあります。 rsyncを使用してtest @ remhost:〜/ somethingフォルダーをbackup @ myhost:〜/ bakフォルダーにコピーしたい。
この目的のために、Ubuntu 11.10(Oneiric)でBASH経由で次のコマンドを使用します。
rsync -avz -e ssh test@remhost:~/something/ ~/bak/
Enterキーを押した後、これを取得します。
test@remhost's password:
パスワードを入力すると、rsyncが機能します。
上記のコマンドを作成して、パスワードを自動的に入力してパラメーターとして渡すか、自動的に入力してジョブを開始します。
rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/
を実行しようとしましたが、それでもパスワードを要求され、迷惑です。
どんな種類のキー(RSA、DSAまたはその他)についても聞きたくありません。ログインして仕事をする簡単なコマンドが欲しいだけです。
編集:公開鍵認証が無効になっていて、これを変更できない場合、考えられるシナリオがあります。例えば。 OpenSSHを使用する場合、ファイルsshd_config
を編集してPubkeyAuthentication yes
を追加するには、サーバーのルート権限が必要です。
編集:これは最終的に私のために働いたものです:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
この方法はパスワードをプレーンテキストで送信し、中間者攻撃に対して脆弱であるため、安全とは見なされないことに注意してください。セキュリティを強化するために、キー認証を使用することをお勧めします。
多分 sshpass を試してください。
使用するのに十分簡単なようです... aptからも利用できます。
私は鍵をコピーする前にこのようなものを探していましたが、とにかくすでに必要なところに鍵を持っているので、これを試してみる時間はありませんでした。
ただし、パスワードの表示に関しては、そのチュートリアルの免責事項に注意してください。
これを行う必要があるすべての人のために:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
セキュリティの脅威に対してより安全なソリューションのバリエーションは、パスワードを厳重な権限でファイルに保存し、shpass
で-f
フラグを使用することです。
sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/
違いは、実行中のプロセスを一覧表示してもコマンドラインにパスワードが表示されず、パスワードが含まれるファイルへのパスのみが表示されることです。
Sshpassは動作することがわかりましたが、用語にはSSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
と書かれているため、次のように実行する必要があります。
sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh
ここで、-P
は、sshpass -v
を実行して、そこにないpassword
というフレーズを探して、どのプロンプトを探すかを指定します。
パスフレーズなしの公開鍵認証が、自動化されたssh/rsyncログインに適したソリューションではない状況は想像できません。
とにかくexpect
はあなたがやりたいことを達成する方法でなければなりません。パスワードをsshにパイプすることはできませんが、これは非常によく似ています。そうする方法は、答えられます ここstackoverflowで 。
最初は、passowrd/bypass
パスワードログインなしでsshを実行します。ターゲットマシンにssh-copy-id -i ./ssh/id_rsa.pub
を使用できることがわかります。
そのテストの後、パスワードなしでsshでマシンをリモートで実行し、次にもちろんローカルマシンからtarget/server
マシンへのrsyncを実行できます