如何通过`rsync`为每个服务器使用`~/.ssh/config`设置

iro*_*and 17 ssh rsync

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

我已经在~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022
Run Code Online (Sandbox Code Playgroud)

我可以轻松地从 rsync 使用这个配置吗?或者我可以~/.rsync为指定的服务器创建和设置默认端口吗?

Ign*_*ams 33

指定"myvps"为主机名。

rsync /var/bar myvps:/home/foo ...
Run Code Online (Sandbox Code Playgroud)


dar*_*ram 9

这对我不起作用。我的 ~/.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
Run Code Online (Sandbox Code Playgroud)

ssh:无法解析主机名 vm-app01:提供了节点名或服务名,或未知 rsync:连接意外关闭(到目前为止收到 0 个字节)[sender] 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
Run Code Online (Sandbox Code Playgroud)

编辑,我能够通过强制 rsync ssh 使用 -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config" 加载配置文件来绕过名称解析

这克服了一个错误,但进入了另一个错误。权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic)。ssh_exchange_identification:连接被远程主机关闭

还尝试在连接中显式设置 -i 和 user@,但发生相同的错误。

编辑

另一个数据点。如果我使用枢轴虚拟机(跳转主机)的浮动 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]
Run Code Online (Sandbox Code Playgroud)

这有效

[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
Run Code Online (Sandbox Code Playgroud)

  • 这个答案似乎更像是解决与当前问题没有直接关系的问题。如果可以制定问题的解释和解决方案,则最好将其作为单独的问题和答案提出。主要问题似乎是您实际上并未使用 SSH 配置中列出的主机名。 (2认同)