Mac端SSH认证失败:需用密码而非RSA密钥登录远程Linux服务器
解决Mac上SSH优先用密钥导致密码登录失败的问题
我之前也碰到过一模一样的情况——Mac自带的OpenSSH客户端默认会优先尝试本地的RSA/ED25519等密钥文件(比如~/.ssh/id_rsa)进行认证,只有当密钥认证完全失败后才会 fallback 到密码登录。而你遇到的情况是,客户端直接用了不合适的密钥去尝试,导致认证失败,还没走到输密码那一步——这也是为什么Windows的Xshell能正常用密码登录,因为Xshell默认会先确认认证方式,或者直接走密码流程。
给你几个实用的解决方案:
1. 临时强制密码登录(单次生效)
在ssh命令里加上两个参数,直接禁用公钥认证、指定优先用密码:
ssh -v -p 10022 -o PreferredAuthentications=password -o PubkeyAuthentication=no qhdxliy@42.123.106.11
PubkeyAuthentication=no:直接关掉公钥认证,不让客户端碰本地密钥PreferredAuthentications=password:明确告诉客户端优先用密码认证
运行这个命令后,你应该就能看到熟悉的密码输入提示了。
2. 配置专属SSH规则(永久生效)
如果不想每次都敲这么长的命令,可以给这个服务器单独配置SSH规则:
- 打开终端,编辑(没有就创建)本地SSH配置文件:
nano ~/.ssh/config
- 添加以下内容:
Host 42.123.106.11 Port 10022 User qhdxliy PreferredAuthentications password PubkeyAuthentication no
- 保存退出(nano里按
Ctrl+O,回车确认,再Ctrl+X退出)。
之后你只需要输入ssh 42.123.106.11,就会自动用密码登录,不用再输端口和用户名了。
3. 额外检查(可选)
虽然你用Xshell能正常登录,说明服务器端的密码认证是开着的,但如果上面的方法还是不行,可以确认一下服务器的sshd_config:
- 用Xshell登录服务器,编辑
/etc/ssh/sshd_config - 确保
PasswordAuthentication yes这一行没有被注释掉 - 重启sshd服务:
sudo systemctl restart sshd(CentOS等老发行版用service sshd restart)
不过这个步骤大概率不需要,毕竟Xshell已经能正常用密码登录了。
内容的提问来源于stack exchange,提问作者user8262885
相关产品推荐
相关产品推荐

