在服务器上的新建账号无法顺利使用vsc的ssh连接
问题描述
前不久在实验室的服务器上创建了一个新的多卡账号, 服务器则是已经通过ssh key连接过在known_hosts中保留指纹信息, 但应该不会影响通过用户名和密码的远程连接方式. 但我在登录过程中遇到了xshell可以正常登录, 但vscode始终显示登录失败的问题. 在vscode的终端输出中显示的内容也只是试图写入的管道不存在, 并同时夹杂着冗长的报错信息.
但是在xshell和xfpt上都是可以正常通过账号密码登录的(而且这两个软件也会默认创建密钥实现后续的服务器直连, 并且也可以将公钥导出到本地的.ssh路径中).
尝试解决
最开始我认为这个问题产生的原因是在113服务器(账号所在服务器)上我已经用vsc和ssh key连接过, 但在新的用户目录下还没有复制对应的公钥. 通过xshell的终端可以进行相应的配置. 由于缺少root权限, 所有的命令行都需要加入sudo前缀. 在最后一步使用nano进入文件后, 直接使用ctrl v粘贴本地的公钥, ctrl o保存文件, 在底部出现确认提示后回车, 随后退出即可.
1 | #在远程服务器上创建ssh文件夹 |
但操作完成后连xshell也无法连接了, 但xfpt仍能正常连上. 随后我尝试了指定vsc的ssh-remote优先使用账号密码验证, 在配置文件中加入了PreferredAuthentications password. 然而后续测试的结果仍然是无法连接, 但报错的信息减少了, 最终的最初始的报错信息中找到了问题发生的原因.
问题根源与解决方案
vsc在远程连接失败后会打印超长的报错日志, 但最关键的信息往往在靠前的位置. 在从头分析后发现关键的报错原因如下:
1 | [12:10:51.465] > mkdir: cannot create directory '/remote-home/zym/.vscode-server': Permission denied |
显然, 这是因为使用vscode远程连接服务器时需要在服务器的用户目录下创建.vscode文件夹, 然后登录用户并没有root权限导致这个文件夹创建失败, 随后又打印了大量的额外报错信息并最终提示连接失败. 只需要将该目录的权限归属到用户即可, 相应命令如下:
1 | #查看当前工作目录 |
最终该问题完美解决, 而且得益于已经写入了公钥, 也已经完成了免密登录的配置.