如标题所述,我无法通过 ssh 连接到远程服务器。我正在尝试将 Windows 计算机连接到运行 CentOS 的服务器。我一直在 Windows 计算机上使用 PuTTY 尝试连接。
最初,当它无法正常工作时,PuTTY 上的错误表明服务器无法识别正在使用的公钥。然后我仔细检查了公钥是否按照~/.ssh/authorized_users
我认为的方式添加,并注意到密钥看起来与我习惯的密钥不同,并且发现它的格式不同(以 开头---- BEGIN SSH2 PUBLIC KEY ----
)。然后我将公钥转换为我习惯看到的类 unix ssh 格式(以ssh-rsa
开头)。然后我重新启动 sshd 并再次尝试 - 没有运气。
之后,我查看了来自堆栈网络和其他地方遇到类似问题的用户发布的几个不同的帖子,并尝试进行了一些更改以使其正常工作,包括:
- 这些步骤来自这里:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown $USER:$USER ~/.ssh -R
- 为解决此问题,请在 sshd 配置文件中添加更多可接受的公钥身份验证方法
- 查看日志并尝试获取更多信息。
我看到有人建议查看日志/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 文件换行符差异引起的,所以我使用了提示这里在键入时没有看到任何 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:
第二次密码提示也比平时出现得快得多,几乎是即时的。
服务器端日志sshd.service
:
Connection closed by authenticating user andy 173.63.60.32 port 11706 [preauth]
(其中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
(gid65534
)etc/passwd
:andy:x:1003:65534:,,,,:/home/andy:/bin/bash
- 添加
andy
到他们的主要组。