对“通过验证用户 andy 173.63.60.32 端口 11706 [preauth] 关闭连接”进行故障排除

Pho*_*nix 9 networking linux ssh unix putty

正如标题中所述,我在通过 ssh 连接到远程服务器时遇到问题。我正在尝试将 Windows 计算机连接到运行 CentOS 的服务器。我一直在 Windows 机器上使用 PuTTY 来尝试连接。

最初,当它无法工作时,PuTTY 上的错误表示服务器无法识别正在使用的公钥。然后,我仔细检查了公钥是否按照~/.ssh/authorized_users我认为应该的方式添加,并注意到该密钥看起来与我习惯的密钥不同,并发现它的格式不同(以 开头---- BEGIN SSH2 PUBLIC KEY ----)。然后,我将公钥转换为我习惯在类 UNIX ssh 中看到的格式(ssh-rsa开头为 )。然后我重新启动 sshd 并再次尝试 - 没有运气。

之后,我查看了来自堆栈网络和其他地方的具有类似问题的用户的一些不同帖子,并尝试了更多更改以使其正常工作,包括:

  1. 从这里开始执行以下步骤:
    • chmod 700 ~/.ssh
    • chmod 600 ~/.ssh/authorized_keys
    • chown $USER:$USER ~/.ssh -R
  2. 在 sshd 配置文件中添加更多可接受的公钥身份验证方法,以防出现问题
  3. 查看日志并尝试获取更多信息。

我看到有人建议查看日志,/var/log/auth.log但我找不到,我检查了日志/var/log/secure,只看到最近失败的 ssh 尝试的一行:

localhost sshd[43706]: Connection closed by authenticating user \username \ip port 11706 [preauth]

(\username 为 linux 用户名,\ip 为 windows 机器的 ip)

我还在某处看到问题可能是由 Windows 文件换行符差异引起的,因此我使用了此处的提示,但在 key 处没有看到任何 Windows 换行符/home/andy/.ssh/authorized_keys

接下来我应该做什么/检查以弄清楚发生了什么?我很擅长调试/排除基于 *nix 的问题,但是一旦 Windows 混合在一起,我就像一条离开水的鱼,不知道在这里做什么。

另外,需要注意的是,我已将 CentOS 计算机上的配置设置为仅 PublicKeyEncryption(并且希望保持这种方式),并且我还禁用了 root ssh(并且希望保持这种方式)。我还成功地通过 ssh 连接到了我的 Mac 上的机器。

小智 1

客户端命令和输出

$ ssh -p 50022 andy@server
andy@server's password: 
Permission denied, please try again.
andy@server's password:
Run Code Online (Sandbox Code Playgroud)

第二个密码提示的出现速度也比平常快得多,几乎是即时的。

服务器端日志sshd.service

Connection closed by authenticating user andy 173.63.60.32 port 11706 [preauth]
Run Code Online (Sandbox Code Playgroud)

(其中andy是用户名、173.63.60.32服务器IP、11706源端口是随机的)

问题

用户andy不是服务器上其主要组的成员。

即:/etc/passwd看起来像:(组ID在andy:x:1003:1000:,,,,:/home/andy:/bin/bash哪里)1000

/etc/goup看起来像:group:x:1000:user01,user02但排除andy.

解决方案

以下任何一项:

  • 将主要组更改andy为他们所属的组。
  • andy将s 主要组更改为nogroup(gid 65534) etc/passwdandy:x:1003:65534:,,,,:/home/andy:/bin/bash
  • 添加andy到他们的主要组。