从 EC2 实例进行 rsync

从 EC2 实例进行 rsync

我正在尝试将数据从 EC2 实例复制到远程主机,并且想知道为什么我的 rsync 命令挂起。

我在 EC2 实例上使用生成了一个密钥对ssh-keygen,然后将添加id_rsa.pub~/.ssh/authorized_keys远程主机上。当我运行 rsync 时,命令挂起。没有权限被拒绝/无法解析主机名错误甚至输出。我可以从其他主机 ssh 并且也可以在远程主机上从 ec2 实例进行 rsync。

在 EC2 实例上,

$ ping remote_host
PING remote_host (re.mo.te.ip) 56(84) bytes of data.
64 bytes from re.mo.te.ip (re.mo.te.ip): icmp_seq=1 ttl=55 time=10.0 ms
$ rsync -avze "ssh -i ~/.ssh/id_rsa" /absolute/path/to/source remote_user@remote_host:/target
...hangs
$ rsync -avze "ssh -i ~/.ssh/id_rsa" /absolute/path/to/source [email protected]:/target
...hangs

需要注意的是,ssh-copy-id在手动将 EC2 实例的公钥复制到远程主机之前~/.ssh/authorized_keys,我尝试了该公钥,但收到Connection timed out错误。这让我认为使用我的 rsync 命令建立了连接,但出于某种原因,远程主机没有回复。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_host
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_host
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: ERROR: ssh: connect to host remote_user@remote_host port 22: Connection timed out

我的问题是 - 如果我已经生成了密钥对并将它们正确添加到远程主机,我是否应该能够从 EC2 实例运行 rsync?或者,还有其他因素吗(我读过安全组和防火墙)?提前感谢你的帮助。

答案1

ssh:连接到主机 remote_user@remote_host 端口 22:连接超时

或者,还有其他因素(我读过有关安全组和防火墙的文章)?

您的错误消息并不意味着密钥被拒绝。客户端甚至还没有达到奉献密钥。更准确地说,“连接超时”意味着操作系统没有收到对 TCP 握手的响应 - 它在开始使用 SSH 之前就失败了。

这意味着在路径的某处有一个防火墙,它只允许 ICMP 数据包通过,但阻止 TCP。最有可能的是,它位于“服务器”端——即不在你的EC2 实例,而是remote_host您尝试访问的实例。(从防火墙的角度来看,通常防火墙设置为阻止传入连接但允许传出连接。)

联系您的 remote_host 的所有者并告诉他们您的 EC2 实例的公共 IP 地址。他们将能够比外部人员更好地调查自己的日志和防火墙规则。

相关内容