我正在尝试在两个服务器、备份和生产之间建立无密码连接。
prod 可以无密码毫无问题地连接到备份,但如果我尝试相反的方式,就会超时。
prod$ ls ~/.ssh/authorized_keys
backup.pub
backup$ ls ~/.ssh/authorized_keys
prod.pub
prod$ ssh backup
Welcome to Ubuntu 13.04 (GNU/Linux 3.8.0-31-generic x86_64)
...
backup$ ssh prod
ssh: connect to host XXX.XXX.XXX.XXX port 22: Connection timed out
我遗漏了什么?另外,显然我无法重新启动产品。
编辑:
backup$ ssh -v [email protected]
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to XXX.XXX.XXX.XXX [XXX.XXX.XXX.XXX] port 22.
debug1: connect to address XXX.XXX.XXX.XXX port 22: Connection timed out
ssh: connect to host XXX.XXX.XXX.XXX port 22: Connection timed out
使用 tail -f 时,超时后会出现以下情况:
Apr 3 11:35:01 sd-39181 CRON[33009]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 3 11:35:01 sd-39181 CRON[33009]: pam_unix(cron:session): session closed for user root
答案1
请尝试以下操作:
获取详细输出以查看正在发生的事情
prod$ ssh -v backup
使用用户名和 IP 只是为了确保你连接的是正确的东西
prod$ ssh -v user_name@prod_ip
检查服务器上是否有正确的对应私钥
也
~/.ssh/authorized_keys
应该是一个每行一个键的文件检查权限
检查你的访问日志,例如在 Ubuntu 上
prod$ tail -f /var/log/auth.log
答案2
超时表示存在连接问题。系统无法建立 TCP 连接,并且没有收到 ICMP 错误消息(如拒绝、禁止或无法访问)。这可能是因为防火墙阻止了您的连接。使用 检查机器上的 iptables 也可能是个好主意sudo iptables -nvL
。
您可以通过 telnet 到端口 22 上的主机来检查 TCP 连接:
telnet prod 22
。最好询问防火墙管理员问题可能出在哪里。