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


14

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

私はすでにssh設定をしています~/.ssh/config

Host myvps
  HostName example.com
  User ironsand
  Port 10022

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

回答:



8

これは私にはうまくいきませんでした。〜/ .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を解決できませんでした:nodenameまたはservnameが提供されていません、または不明rsync:接続が予期せず閉じられました(これまでに0バイトを受信)[送信者] rsyncエラー:/ SourceCache / rsync / rsync- 42 / rsync / io.c(452)[送信者= 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が機能します。しかし、-e "ssh"ですべてのssh / configを明示的にダンプしても機能しません。詳細:ローカル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 user@10.x.y.z:/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 user@10.x.y.z:/home/user

私の場合、ショートカットを使用できないことに気付きましたが、実際の完全なホスト名は使用できます
dashesy

1

@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

0

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

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


-1

@darKoram

「vm-app01」の完全なDNS名は何ですか?rsyncなしでssh内でアクセスできると主張しているため、パブリックである必要があります。ただし、sshがパターン「21ct-dev1- *」を介してホストをキャッチすることを期待します。これがどのように機能するかは本当にわかりません。ホスト名をパターン化しようとすると、次のようになります。

Host *.21ct-dev1-domain.tld

次に、rsyncの呼び出しは次のようになります。

rsync -e "ssh" /local/path/ vm-app01.21ct-dev1-domain.tld:/remote/path/

「vm-app01」はどのように解決されますか?ホストファイル、勝ち、NIS、NSS?エイリアスはありますか?ドメイン内にいますか?それは確かに「単純な」DNS問題のように見えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.