前

首先,我知道这个问题已被问过一百万次,并且我已阅读了所有我能找到的资料但仍然无法解决问题。

我在从我的 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

注意两点:

  1. 3 行而不是 1 行,最后 2 行以 4 个空格作为缩进
  2. 为了避免错误,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

更多详细信息请点击此处

相关内容