web-dev-qa-db-ja.com

rsyncがリモートサーバーにログインしてrsyncを完了するためのスクリプトにパスワードを入力する

自動rsyncを実行するcronjobが時々実行される.shファイルを作成しようとしています。これは私のファイルがこれまでどのように見えるかです:

#!/bin/bash

subdir=`hostname`

rsync -ah -e 'ssh -p 48180' /home/user/test 
[email protected]:/var/www/html/xgplayer/events/"$subdir" -y

これは1つのコマンドであり、1行には長すぎるため、半分にカットする必要がありました。

そのユーザーがアクセスできるマシンのホスト名に基づいてサブディレクトリを作成するように設定しています(それがよさそうであれば、少し違う目的に使用されるオフコードをベースにしていることを教えてください)。 (私は理由のためにユーザーをユーザーと呼びましたが、それは無視します)

私の質問は、それがしようとしているようにsshキーを保存することに自動的に同意しますか?また、ファイルをrsyncするためにそのユーザーとしてログインしようとするときにsshで実行しようとしているコマンドを介して自動的にパスワードを入力するにはどうすればよいですか?次のようなものがあると思いました-それができます。助けていただければ幸いです:)

助けがあれば、両方のマシンでUbuntu Server 16.04 LTSを実行しています。

編集:非常にトリッキーではありませんが、ソリューションが.shファイルに置かれ、ユーザー入力なしでそれ自体を実行できる必要がある場合、これは非常に特定のタスクのためです、申し訳ありません。

編集2:私を助けてくれる人のリクエストに従ってこれを行うので、残念ながらスクリーンショットを提供することはできませんが、リストしたrsyncコマンドを実行するたびに、また実行するたびに10.3.10.110のユーザーのパスワードを要求しますそのマシンでそのユーザーのキーを生成しようとする新しいクライアントのssh-keygen。私がこれを使用しようとしているアプリケーションでは、これを完全に自動化する必要があるため、これが問題です。

編集2.5:keygenとssh-copy-idを実行すると、rsyncでパスワードの入力を求められなくなりますが、これは多くのマシンで実装される予定です。このプロジェクトでは、これらを種類のセットアップ.shファイルですが、これらのコマンドは、特定のケースで使用するために自動化する必要がある入力が必要です。

編集3:私を助けようとしている人々と直接チャットするのに十分な担当者がいないため、私はたくさんコメントしています。このサイトはまだ新しいです。

1
tommy61157

私は自分の答えがそれをさらに掘り下げていることを見つけました。これを完全に自動化する方法への答えと、私がこれに到達するのに役立ついくつかの役立つリンクを投稿します:

#!/bin/bash


subdir=`hostname`

rsync -ah -e 'sshpass -p "password" ssh -p 48180 -o 
StrictHostKeyChecking=no' /var/www/html/xgplayer/events 
[email protected]:/var/www/html/xgplayer/events/"$subdir" 

そのRsyncコマンドはすべて1つのコマンドです。助けたリンク:

https://unix.stackexchange.com/questions/33271/how-to-avoid-ssh-asking-permissionhttps://unix.stackexchange.com/questions/111526/ rsync-without-Prompt-for-password (2番目に高い投票数の回答は、「ベスト」回答よりも有用でした)

また、明らかにここに投稿するのではなく、ユーザーとパスワードを必要に応じてユーザーとパスワードと入れ替えます。

助けてくれた皆さんのおかげで、皆さんは私をほとんど正しい方向に導く手助けをしてくれました! :)

1
tommy61157

オプションを使用します:--password-file=rsync_pass

rsync -ah -e 'ssh -p 48180' --password-file=rsync_pass /home/user/test [email protected]:/var/www/html/xgplayer/events/"$subdir" -y

ファイルrsync_passにはユーザーパスワードが含まれています。

1
MatsK