如何通过rsync在每个服务器上使用〜/ .ssh / config设置


14

我现在使用带有-e 'ssh -p 10022'选项的rsync 来指定端口。

我已经在ssh设置了~/.ssh/config

Host myvps
  HostName example.com
  User ironsand
  Port 10022

我可以轻松地从rsync使用此配置吗?还是可以~/.rsync为指定服务器创建并设置默认端口?

Answers:



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:提供了节点名或服务名,或者未知rsync:连接意外关闭(到目前为止已接收0个字节)[发送方] rsync错误:/ SourceCache / rsync / rsync-处的原因不明的错误(代码255) 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”来加载配置文件,可以克服名称解析问题

这超越了一个错误,但又到了另一个错误。权限被拒绝(公钥,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 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

我意识到我无法使用快捷方式,但可以使用实际的完整主机名
破旧的2014年

1

@darKoram。对于用非标准路径调用ssh并尝试在ProxyCommand中使用ssh的情况,这是有问题的,因为没有继承。您有两种选择:直接在内部命令中提供相同文件,或动态修改文件。您可能会在我的博客文章中找到有关此内容的详细说明: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用户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”?托管文件,wins,nis,nss?你有别名吗?您在域中吗?它肯定看起来像一个“简单”的DNS问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.