最近在玩WSL,就是Windows Subsystem for Linux,感觉很好,能够完全替换Cygwin。

于是就在WSL里远程连接一个服务器,服务器用的是root账户,那么显然是ssh root@ipv4了。但是在本地WSL里呢,由于多次忘记sudo导致报错,我就自然而言的加了sudo,所以就是sudo ssh root@ipv4,结果呢,总是提示要密码。这就很邪门,我明明已经把ssh pub key放进去了。

后来通过一个命令sudo ssh -v root@ipv4,看到了整个日志,一大堆,打印出来,看到一个问题,ssh首先是要查找本地的ssh private key,但查了一圈没查到,所以才提示要求输入密码的。

那么问题来了,为啥没查到本地的ssh private key呢?
后来搜了一下,也没搜到答案,然后呢,看了日志,结合别人的回复,以及这个ssh的日志,发现,ssh首先查找的是的/root/.ssh/目录下的一堆可能存放private key的文件,但显然没找到。

那么我就不用sudo,一试,果然就好了。

原来啊,你用sudo了,就是root账户的身份了,自然查找root账户的private key了。显然应该是你用哪个账户生成的public key,你就用哪个账户的身份来执行ssh命令。

标签: sudo, ssh, WSL

添加新评论