Ubuntu 23.04无密码SSH登录问题求助
我之前也碰到过一模一样的情况,新版本Ubuntu(22.10/23.04)里SSH服务的默认配置或者权限要求更严格了,给你几个实用的排查步骤,大概率能解决:
检查远程服务器的权限配置
这是最常见的坑!SSH对.ssh目录和authorized_keys文件的权限要求很严,权限太宽松会直接拒绝密钥登录。你在远程服务器上执行这几条命令:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys sudo chown $USER:$USER ~/.ssh -R简单解释下:
.ssh目录必须设为700(只有自己能读、写、执行),authorized_keys必须是600(只有自己能读、写),而且整个.ssh目录的所有权必须属于你用来登录的用户,不能是root或者其他用户。检查SSH服务的配置文件
编辑远程服务器的/etc/ssh/sshd_config文件,确保以下几个配置项是开启的:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 # 如果你还想保留密码登录作为备用,可以暂时开着下面这个,搞定密钥后再关闭 PasswordAuthentication yes ChallengeResponseAuthentication no修改完记得重启SSH服务生效:
sudo systemctl restart sshd查看登录日志找具体报错
有时候权限和配置都没问题,但还是有隐藏问题,这时候看日志最管用。在远程服务器上执行:sudo tail -f /var/log/auth.log然后在本地尝试SSH连接,盯着日志看会弹出具体的错误信息,比如密钥不匹配、某个文件权限不对之类的,根据报错再针对性解决。
确认本地公钥和远程的authorized_keys完全一致
有时候复制公钥的时候不小心少了字符或者多了空格,导致密钥不匹配。你可以在本地执行cat ~/.ssh/id_rsa.pub(如果用的是RSA密钥,其他类型比如ED25519就换成对应的文件名),然后在远程执行cat ~/.ssh/authorized_keys,对比两段内容是不是完全一样,包括开头的ssh-rsa(或其他类型标识)和结尾的注释都要对应上。
我当时就是权限配置的问题,改完之后立刻就能无密码登录了,你一步步排查应该能解决~
备注:内容来源于stack exchange,提问作者Ubuntu User

