关于ssh 文件及目录权限

今天在整理ssh配置的时候,发现wsl2中的ssh无法配置成免密证书登录,奇怪的是,我另外一台却可以。 首先可以肯定的是两个的配置完全相同,连匹配的证书都用的是相同的,最后无奈,只能打开sshd_config 中的调试功能。

sshd_config中对应的调试开关如下:


# Logging
SyslogFacility AUTH
LogLevel DEBUG3

打开后,在/var/log/auth.log 中可以看到日志。。。。我的看到很多尝试登陆的日志。

找到几条相关的日志:


Aug 28 17:24:22 pipo sshd[604587]: debug1: trying public key file /home/test/.ssh/authorized_keys
Aug 28 17:24:22 pipo sshd[604587]: debug1: fd 5 clearing O_NONBLOCK
Aug 28 17:24:22 pipo sshd[604587]: Authentication refused: bad ownership or modes for directory /home/test
Aug 28 17:24:22 pipo sshd[604587]: debug1: restore_uid: 0/0
Aug 28 17:24:22 pipo sshd[604587]: debug1: temporarily_use_uid: 1000/1000 (e=0/0)
Aug 28 17:24:22 pipo sshd[604587]: debug1: trying public key file /home/test/.ssh/authorized_keys2
Aug 28 17:24:22 pipo sshd[604587]: debug1: Could not open authorized keys '/home/test/.ssh/authorized_keys2': No such file or directory
Aug 28 17:24:22 pipo sshd[604587]: debug1: restore_uid: 0/0
Aug 28 17:24:22 pipo sshd[604587]: debug3: mm_answer_keyallowed: publickey authentication test: RSA key is not allowed

ssh会从两个文件中读取公钥来判断, 如果一个没有就读取另外一个,同时,ssh还做了一件事情就是关于文件,文件夹的权限判断。

.ssh的目录权限必须是 0700 或者 0755

公钥及authorized_keys*必须是 0644

密钥文件必须是 0600

其实还有一个就是用户的目录文件,比如上面日志中的/home/test 目录, 必须属于用户并且为755

因为我的home目录windows的路径下复制过来的,所以权限全错了。修改了之后就可以使用证书登录了。

另外,ssh 从7.3(2016年8月1日发布) 的版本开始,在config文件中可以使用include指令了, 这样 可以把不同的主机进行分门别类的存放到不同的文件中,方便了很多。

而且,还可以在config文件中使用下面的两行指令来暂存密码登录:

ControlMaster auto
ControlPath /tmp/%r@%h:%p

加入后,输入密码连上某台主机后,再在新窗口中,连接相同主机的话,就不需要输入密码了。对我这种 经常需要一边打开文件编辑,一边编译,一边观察运行结果的人来说,便利不少

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据