SSH“拒绝密钥”仅适用于公共 IP,可在本地运行

SSH“拒绝密钥”仅适用于公共 IP,可在本地运行

所以我的问题是我无法从我的客户端(Windows 7 通过 PuTTY)连接到我的 SSH 服务器(在 Linux Mint Sarah 上运行)。只能通过本地 IP 工作。

服务器和客户端都位于同一子网中。SSH 服务器设置为仅允许无密码的 SSH-RSA 密钥连接。我已安装密钥,当我连接到服务器的本地 IP 时,它按预期成功运行。

我已经在 WAN 设备的防火墙中打开了端口 22,当我尝试使用公网 IP 时,我可以确认它连接到了正确的框,因为勾选服务器的防火墙的打开/关闭会导致拒绝。因此,SSH 连接成功到达服务器,尝试使用私钥进行身份验证,但失败了:

Server refused our key

听起来很明显,但我不明白为什么密钥无法验证,而我可以在本地使用相同的密钥成功验证。这个问题很难研究,因为大多数结果都是不正确的端口转发。

这是我尝试过的(以下指南等):

  • 更新了服务器上的所有软件包和apt-get install openssh-server
  • /etc/ssh/sshd_config已经设置了:
    • Port 22
    • AllowUsers user
    • PasswordAuthentication no
    • UsePAM no
  • 在 PuTTYgen 中,创建了一个保存到目录(在 Windows 中)的公钥和私钥。
  • 在 中/home/user/.ssh/authorized_keys,将公钥中以 开头ssh-rsa和以 结尾的部分复制== comment到一行上,并在末尾添加回车符。
  • chmod 700 ~/.ssh列为ls -aldrwx------
  • chmod 644 ~/.ssh/authorized_keys列为ls -l-rw-r--r--
  • 在 PuTTY 中,SSH > Auth 下,将“用于身份验证的私钥”设置为之前生成的私钥。
  • 连接到端口 22 user@<local_ip>...成功。
  • 连接到端口 22作为user@<public_ip>...。Server refused our key

作为奖励,当密钥被拒绝时,tailing不会给我任何东西。当本地连接时,它会打印一行。/var/log/auth.logAccepted publickey

最后,我不确定这是否相关,但是尝试使用公共 IP 上的 FileZilla 连接 SFTP 时出现此错误:

Error:  The first key-exchange algorithm supported by the server is diffie-hellman-group1-sha1, which is no longer secure. Aborting connection.
Error:  Could not connect to server

说我是中级 Linux 用户有点夸张,所以也许我忽略了一些东西。我希望我的问题说清楚了。感谢任何帮助!


编辑:来自PuTTY 的 SSH 数据包和原始数据的输出(大部分是垃圾,因此包括我认为人类可读的内容):

Event Log: Looking up host "<omitted>"
Event Log: Connecting to <omitted> port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.67
Event Log: Server version: SSH-2.0-dropbear_0.46
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Event Log: Using Diffie-Hellman with standard group "group1"
Event Log: Doing Diffie-Hellman key exchange with hash SHA-1
Event Log: Host key fingerprint is:
Event Log: ssh-rsa 1040 <omitted>
Outgoing packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Incoming packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Incoming packet #0x4, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
  00000000  00 00 00 12 70 75 62 6c 69 63 6b 65 79 2c 70 61  ....publickey,pa
  00000010  73 73 77 6f 72 64 00                             ssword.
Event Log: Server refused our key

答案1

此行让我怀疑当您连接到公共 IP 上的端口 22 时,您实际上正在连接到路由器或调制解调器。

Event Log: Server version: SSH-2.0-dropbear_0.46

如果您使用内部 IP 进行连接,您是否会获得相同的服务器版本行?如果没有,您可能需要在调制解调器和/或路由器上禁用 SSH,并设置端口 22 到 Linux 服务器内部 IP 的端口转发(如果尚未完成)。

如果您无法在调制解调器/路由器上禁用 SSH,您可以尝试将另一个端口(例如 2222)转发到 Linux 服务器上的端口 22。

相关内容