SSH 経由で接続する RSync ジョブを設定したいと思います。
私のコンピューター (backup@myhost) とリモート ホスト (test@remhost) があり、フォルダー ~/something とそのすべての内容をバックアップする必要があります。ssh ユーザー test は、~/ フォルダー内のすべてのファイルとフォルダーに対して読み取りアクセス権のみを持ちます。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、またはその他のキー) についても聞きたくありません。ログインして作業を実行する単純なコマンドだけが必要です。
編集:sshd_config
考えられるシナリオとしては、公開鍵認証が無効になっていて、これを変更できない場合が挙げられます。たとえば、OpenSSH を使用する場合、ファイルを編集して追加するには、サーバー上でルート権限が必要になりますPubkeyAuthentication yes
。
編集:最終的に私にとってうまくいったのは次の通りです:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
この方法は、パスワードをプレーンテキストで送信し、中間者攻撃に対して脆弱であるため、安全とは見なされません。セキュリティを強化するには、キー認証を使用することをお勧めします。
答え1
試してみる sshpass。
使い方は簡単そうです...apt からも利用できます。
キーをコピーする前に、このようなものを探していましたが、必要な場所にはすでにキーが揃っているので、これを試す時間がありませんでした。
ただし、パスワードの可視性に関するチュートリアルの免責事項に注意してください。
これを実行する必要があるすべての人へ:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
答え2
セキュリティ上の脅威に対してより安全なソリューションのバリエーションとしては、パスワードを厳しい権限を持つファイルに保存し、次の-f
フラグを使用することですshpass
。
sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/
違いは、実行中のプロセスを一覧表示してもコマンド ラインにパスワードが表示されず、パスワードが格納されているファイルへのパスのみが表示されることです。
答え3
パスフレーズなしの公開鍵認証が、自動化された ssh/rsync ログインのより優れたソリューションにならない状況は想像できません。
とにかく、expect
あなたがやりたいことを達成する方法があるはずです。パスワードをsshにパイプすることはできませんが、これは非常に似たものです。その方法は、答えですここはスタックオーバーフロー。
答え4
これも機能します:
system <<~ "RSYNC";
rsync \\
--rsh="sshpass -p '$password' ssh -p 22" \\
--archive \\
--verbose \\
--progress \\
--partial \\
--human-readable \\
"$directory" \\
"$options{host}:${directory}"
RSYNC
つまり、前を通り過ぎるのではなく、sshpass
中を通り過ぎる--rsh
rsync
この方法は、環境変数の使用方法とともに、SSHPASS
マニュアルの例のセクションで説明されています。