在设置 ssh 免秘钥登陆的时候,经常碰到设置无效,还是需要输入登陆的情况。这种问题怎么排查呢?
一种方式是给ssh
加-v
选项,但是这个选项输出来的日志往往没什么用。最好的方式是直接让远程机器上的sshd
进程输出 debug 信息。
首先,你可以单独再起一个sshd
进程,开启调试模式,为了不影响当前的登陆,可以选择另外的端口。例如sudo /usr/sbin/sshd -d -p 80
,这样就在 80 端口上起了一个ssh
进程。然后,你可以通过-p
选项指定 ssh 的端口ssh -p 80 user@ip
。
这样就可以在远程服务器上看到调试信息了。
![](https://img.haomeiwen.com/i15423847/ce39f8f37bd4fa2c.png-itluobo)
这里的问题是~/.ssh
目录的权限不对,~/.ssh/
目录以及~/.ssh/authorized_keys
文件必须都只能你自己拥有写入权限。
修复办法,运行chmod 700 ~/.ssh
linux 里每个文件都有 rwx 三个权限位,3 个二进制位来表示就是,7 对应的就是111
,也就是拥有 rwx 的全部权限。同时,每个文件又都有三组权限,分别对应所有者,用户组和其他人。其他两个权限组都是 0,也就是什么权限都没有。
另外,如果想直接调试当前的sshd
服务的话,需要运行:
service ssh stop
/usr/sbin/sshd -d
网友评论