web-dev-qa-db-ja.com

`rsync`による各サーバーの`〜/ .ssh / config`設定の使用方法

現在、ポートを指定するために-e 'ssh -p 10022'オプションを指定してrsyncを使用しています。

~/.ssh/configにはすでにssh設定があります。

Host myvps
  HostName example.com
  User ironsand
  Port 10022

この構成をrsyncから簡単に使用できますか?または、~/.rsyncを作成して、サーバーを指定するためのデフォルトのポートを設定できますか?

14
ironsand

ホスト名として"myvps"を指定します。

rsync /var/bar myvps:/home/foo ...

これは私にはうまくいきませんでした。 〜/ .ssh/configにジャンプホスティングがあります

Host 10.x.y.z
    User cloud-user
    HostName vm-pivot
    IdentityFile /path_to_vm_key

Host 21ct-dev1-*
    User cloud-user
    HostName %h.example.com
    ProxyCommand ssh 10.x.y.z -W %h:%p
    IdentityFile /path_to_vm_key


rsync -e "ssh" local_path vm-app01:/remote_path

ssh:ホスト名vm-app01を解決できませんでした:ノード名もサービス名も提供されていない、または不明rsync:接続が予期せず終了しました(これまでに受信した0バイト)[送信者] rsyncエラー:原因不明のエラー(コード255) /SourceCache/rsync/rsync-42/rsync/io.c(452)[sender = 2.6.9]

しかし、これはうまく機能します

[kbroughton@kbroughton:project + (develop)] ssh vm-app01
Last login: Thu Apr 17 12:10:37 2014 from 10.a.b.c

編集、私はrsync sshに-F Sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config"で設定ファイルをロードするように強制することで、名前解決を回避することができました

これは1つのエラーを通過しますが、別のエラーになります。権限が拒否されました(publickey、gssapi-keyex、gssapi-with-mic)。 ssh_exchange_identification:リモートホストによって接続が閉じられました

接続で-iとuser @を明示的に設定しようとしたが、同じエラーが発生した。

編集

別のデータポイント。名前の代わりにピボットvm(ジャンプホスト)のフローティングIPを使用すると、vm-pivot rsyncが機能します。しかし、すべてのssh/configを-e "ssh"に明示的にダンプしても機能しません。詳細:ローカルMac、rsync 3.1.0にアップグレード、リモートcentos rsync 3.0.9。

[kbroughton@kbroughton:project + (develop)] Sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@vm-pivot:/home/user

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote Host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]

[kbroughton@kbroughton:project + (develop)] Sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz [email protected]:/home/user
protocol version mismatch -- is your Shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.1.0]

これは機能します

[kbroughton@kbroughton:project + (develop)] Sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key"  /var/data/sources/data.tar.gz [email protected]:/home/user
9
darKoram

@darKoram。非標準パスでsshを呼び出し、ProxyCommandでsshを使用する場合は、継承がないため問題です。あなたはそこに2つのオプションがあります:内部コマンドで同じファイルを直接提供するか、動的にそれをハックします。あなたはそれについて私のブログの投稿で詳細な説明を見るかもしれません: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

まもなくあなたの状況では、次のような設定に役立ちます:

Host 21ct-dev1-*
  User cloud-user
  HostName %h.example.com
  ProxyCommand ssh $( egrep -z -A1 '^-F$' /proc/$PPID/cmdline ) 10.x.y.z -W %h:%p
  IdentityFile /path_to_vm_key
1
Hubbitus

@darKoram。 Sudoを使用してSSHプロセスを実行します。

Sudo/usr/local/bin/rsync -az -e "Sudo -u user ssh" /var/data/sources/data.tar.gz vm-app01:/ home/user

0
Greywood