VSCode SSH免密登录失败原因 原因分析及解决

1. RSA公钥私钥配置:

配置操作见此博文

可能是个例:Windows配置RSA密钥对无法免密登录。Windows端配置了私钥id_rsa和公钥id_rsa.pub。将id_rsa.pub放到服务器 ~/myname/.ssh/目录下,并且更名为authorized_keys后,无法免密登录(后文提到的.ssh文件夹权限,authorized_keys问题均配置正确,并且没有SELinux禁止访问问题)。

解决方案:Linux服务器生成密钥对成功免密登录。在服务器端生成私钥公钥对,将私钥下载到windows的 C:/Users/myname/.ssh/目录下,因为我有多个服务器,所以修改了私钥id_rsa的名字为id_rsa228,并且配置该目录下的配置文件C:/Users/myname/.ssh/config,添加IdentityFile子段指定私钥的路径,即可成功。VSCode SSH免密登录失败原因 原因分析及解决_第1张图片


2. 服务器端文件夹权限,及SELinux禁止访问

2.1. Linux服务器端~/myname/.ssh文件夹权限,及文件权限的问题
2.2. SELinux禁止访问~/myname/.ssh的问题
参考这篇博文


3. 排查方法:

3.1. Linux服务器端,使用ssh的debug模式:

sudo /usr/sbin/sshd -d -p 2222

启动后如下图
VSCode SSH免密登录失败原因 原因分析及解决_第2张图片

如果防火墙禁止使用2222端口

#防火墙开放2222端口
sudo firewall-cmd --permanent --add-port=2222/tcp
#重新加载生效
sudo firewall-cmd --reload

3.2 Windows客户端,这里我使用cmd进行调试

#-i指定私钥,对应C:/Users/myname/.ssh/config配置文件中的“IdentityFile”字段
ssh -vvv [email protected] -p 2222 -i C:/Users/myname/.ssh/id_rsa228

上述命令回车,服务器端如果有“Authentication refused: bad ownership or modes for directory”这个提示,就参考这篇博文修改权限
如果正常登录,则调试成功!

3.2 但是也不一定
调试结束后,在windows的cmd里登录

ssh [email protected] -i C:/Users/myname/.ssh/id_rsa228

仍然要求输入密码,这是怎么回事?

这里就需要看服务器端的日志了:
a. 在Linux服务器端执行如下命令

sudo vim /etc/ssh/sshd_config

找到“LogLevel”字段,删除前边的“#”,并修改为“LogLevel Debug”

b. 重新在cmd里输入命令登录,并且查看日志

sudo vim /var/log/messages

在这里插入图片描述
如果有上图中SELinux阻止访问文件,则参考这篇博文修改权限


你可能感兴趣的:(linux,ssh,vscode,linux)