0%

vsc账号首次远程连接失败的问题与解决

在服务器上的新建账号无法顺利使用vsc的ssh连接


问题描述

前不久在实验室的服务器上创建了一个新的多卡账号, 服务器则是已经通过ssh key连接过在known_hosts中保留指纹信息, 但应该不会影响通过用户名和密码的远程连接方式. 但我在登录过程中遇到了xshell可以正常登录, 但vscode始终显示登录失败的问题. 在vscode的终端输出中显示的内容也只是试图写入的管道不存在, 并同时夹杂着冗长的报错信息.

但是在xshellxfpt上都是可以正常通过账号密码登录的(而且这两个软件也会默认创建密钥实现后续的服务器直连, 并且也可以将公钥导出到本地的.ssh路径中).

尝试解决

最开始我认为这个问题产生的原因是在113服务器(账号所在服务器)上我已经用vsc和ssh key连接过, 但在新的用户目录下还没有复制对应的公钥. 通过xshell的终端可以进行相应的配置. 由于缺少root权限, 所有的命令行都需要加入sudo前缀. 在最后一步使用nano进入文件后, 直接使用ctrl v粘贴本地的公钥, ctrl o保存文件, 在底部出现确认提示后回车, 随后退出即可.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#在远程服务器上创建ssh文件夹
sudo mkdir -p ~/.ssh

#设置权限, 仅目录所有者可以访问读写
sudo chmod 700 ~/.ssh

#进入路径, 创建用于保存公钥的文件
sudo touch ~/.ssh/authorized_keys

#设置文件权限
sudo chmod 600 ~/.ssh/authorized_keys

#使用nano在终端写入
nano ~/.ssh/authorized_keys

但操作完成后连xshell也无法连接了, 但xfpt仍能正常连上. 随后我尝试了指定vsc的ssh-remote优先使用账号密码验证, 在配置文件中加入了PreferredAuthentications password. 然而后续测试的结果仍然是无法连接, 但报错的信息减少了, 最终的最初始的报错信息中找到了问题发生的原因.

问题根源与解决方案

vsc在远程连接失败后会打印超长的报错日志, 但最关键的信息往往在靠前的位置. 在从头分析后发现关键的报错原因如下:

1
2
3
[12:10:51.465] > mkdir: cannot create directory '/remote-home/zym/.vscode-server': Permission denied
> chmod: cannot access '/remote-home/zym/.vscode-server': No such file or directory
> Creating the server install dir failed...

显然, 这是因为使用vscode远程连接服务器时需要在服务器的用户目录下创建.vscode文件夹, 然后登录用户并没有root权限导致这个文件夹创建失败, 随后又打印了大量的额外报错信息并最终提示连接失败. 只需要将该目录的权限归属到用户即可, 相应命令如下:

1
2
3
4
5
6
7
8
9
10
11
#查看当前工作目录
pwd

#查看目录拥有者和群组
ls -ld /remote-home/zym

#更改目录拥有者为当前用户
sudo chown zym:zym /remote-home/zym

#更新读写权限
chmod 755 /remote-home/zym

最终该问题完美解决, 而且得益于已经写入了公钥, 也已经完成了免密登录的配置.