首先,我知道这个问题已被问过一百万次,并且我已阅读了所有我能找到的资料但仍然无法解决问题。
我在从我的 Mac 通过 ssh 连接到全新安装的 Ubuntu 上的 Ubuntu 服务器时遇到了这个问题(由于这个问题,我重新安装了)。
我已将 SSH 端口映射到 7070,因为我的 ISP 阻止了 22。
在客户端上:
bash: ssh -p 7070 -v [email protected]
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to address.org port 7070.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type 1
debug1: identity file /home/me/.ssh/id_dsa type -1
ssh_exchange_identification: Connection closed by remote host
以下是我为尝试解决该问题所采取的措施:
确保我的maxstartups
没问题:
bash: grep MaxStartups /etc/ssh/sshd_config
#MaxStartups 10:30:60
- 确保 hosts.deny 没有被拒绝。
- 确保 hosts.allow 有我的客户端 IP。
- 清除客户端上的known_hosts
- 将 /var/run 的所有权更改为 root
- 确保 etc/run/ssh 是
- 确保 /var/empty 存在
- 重新安装 openssh-server
- 重新安装 ubuntu
当我运行时telnet localhost
,我得到了这个:
telnet localhost
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
当我运行 /usr/sbin/sshd -t
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
当我使用重新生成密钥时
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
我犯了同样的错误。
我确信这就是问题所在。有人能帮忙吗?
答案1
我编辑 /etc/hosts.allow 后立即收到此错误。
看看我修复之前和之后的情况。
前
ALL: 192.168.1 notice no period after 192.168.1
ssh_exchange_identification: Connection closed by remote host
后
ALL: 192.168.1. see the extra period after 192.168.1.
[email protected]'s password:
Welcome to Linux Mint 11 Katya (GNU/Linux 2.6.38-8-generic i686)
答案2
我知道这个问题有点老了,但是因为它还没有一个可以接受的答案,所以这里是在 Koding.com 上连接到虚拟机的示例中对我有用的解决方案:
更改.ssh/config
文件
从:
Host *.kd.io User myusername ProxyCommand ssh %[email protected] nc %h %p
到:
Host *.kd.io
User myusername
ProxyCommand ssh [email protected] nc %h %p
注意两点:
- 3 行而不是 1 行,最后 2 行以 4 个空格作为缩进
- 为了避免错误,
percent_expand: unknown key %r
我将其更改%r
为我的用户名
我正在运行 Centos6
答案3
我能想到的最有可能拯救你的事情是你尚未检查的authorized_keys文件的所有权。检查是/home/me/.ssh/
700,里面的文件是600(不是组可访问的)并且由“我”拥有。尝试-vvv
更详细地解释ssh在那时到底在做什么。
确保sshd -t
以 root 身份运行。如果我以用户身份运行,我会收到“无法打开主机密钥”错误。否则,请确保 /etc/ssh/ssh_host_*_key 为 root:root 和 600,但 .pub 密钥为 root:root 644
我认为在您能够连接到非标准端口之前,selinux 就会对其提出抱怨,但为了以防万一,请检查 /var/log/audit.log 是否启用了 selinux。
答案4
sshd
如果您的服务无法运行,您会收到“ssh_exchange_identification:远程主机关闭连接” !
如果您有权访问服务器,请检查该sshd
服务是否已运行:
ps aux | grep ssh
并检查它是否正在监听端口 22:
netstat -plant | grep :22