关于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

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

wsl2 配置服务及端口转发

wsl2 配置后,通过vnc访问的话,会对网络要求比较高。我比较喜欢ssh的方式访问。通过命令行安装openssh服务后,默认的wsl2 是虚拟机中的网络,外部网络不能直接访问。可以通过配置端口转发。下面的命令在power shell 下执行

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[IP] connectport=[PORT]

IP替换为虚拟机自身的端口,一般172开头的。 PORT替换为wsl2服务打开的端口

还要在win10的防火墙中加入例外,不然没办法从外面访问。

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222

上面是从其他地方查资料抄来的,留在这里做个备份

win10 加快 wsl的 磁盘访问速度

按照微软的说法, wsl2的磁盘访问速度比wsl要快很多,事实也如此,但仅限于wsl2自身的硬盘。

wsl2是基于虚拟机的,如果访问/mnt/下的物理硬盘的话,会很慢,大约在30MB~100MB之间吧,我的是机械硬盘,固态或许会更快些。

dd if=/dev/zero of=/mnt/d/test.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 11.4999 s, 91.2 MB/s

有人测试使用smb远程访问的方式会比这个速度快,于是,我将分区完全共享,然后挂载上,测试了一下:

dd if=/dev/zero of=/mnt/wsl/test.img bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,7.28131 s,144 MB/s

大体上在60MB~160MB之间吧。 这个上限可能是wsl2的虚拟网卡的速度吧, 整体大约会比直接访问快25%左右

电信sdn光猫桥接后使用光猫的wifi

电信光猫桥接后,应该是里面的路由部分有问题,因此,虽然光猫的软件 网络管家 虽然可以连上去,控制wifi等, 部分的功能比如天翼云盘之类的可以使用,也就是路由这部分本身可以上网,但这部分是没有dhcp的,而且,不是 真正的支持完整桥接,所以,如果打开wifi后,连上光猫自身热点的话,是没办法上网的,因为没办法分配IP地址, 如果真的要用,需要手动设置ip地址,网关,dns域名解析等,手动设置后就可以上网了。

所以,这个光猫自带的wifi在这种情况下,一点也不好用了。同样地,连接到光猫采用类似方式的有线部分也 需要这样设置。

电信SDN网关桥接后关闭SDN网关的wifi

上周升级电信网络后,送的老的光猫换成新的后,安装的小工说现在改桥接只能局端修改,权限被收回了。经过一段时间周折,终于变成桥接了。 然后发现光猫自带的wifi竟然没有关闭,而手机app也无法通过wifi热点来控制光猫上的wifi了。这个wifi连关闭都无法关闭了。。。

通过有线手动设置ip连上光猫后,只能看到一个状态,现在这玩意被关闭的连个控制后台都没有。手机连wifi后手动ip也无法连上。

后来注意到wifi热点连接的时候,无法正常使用是因为无dhcp服务器分配ip地址,因此手机端的dhcp提示都是无法分配ip地址。 既然dhcp没有,而端口1又被作为桥接网口的外网端口,剩下的3个口,理论上可以作为普通路由器的普通端口,一般路由器做桥接 功能的话,只用将网线接入到LAN口就行了,于是就将自己路由器下的LAN口的一根网线连接回光猫的其他端口,然后, 光猫的wifi部分 就可以作为普通的wifi热点使用了。这样一接后,手机便可以控制光猫的wifi了,包括开关。