在使用 VS Code 通过 SSH 远程连接服务器时,我遇到了两个主要问题,分别是 OpenSSL 版本不匹配和 SSH 私钥文件权限不正确导致连接失败。经过一番尝试,成功解决了这些问题。本文将详细记录解决过程,供大家参考。
问题描述
-
OpenSSL 版本不匹配:运行
ssh -V
时提示OpenSSL version mismatch. Built against 30000020, you have 30300020
。 -
权限错误:在 VS Code 中连接服务器时,出现
Bad owner or permissions on /home/username/.ssh/config
和WARNING: UNPROTECTED PRIVATE KEY FILE!
的错误提示。
解决方法
一、解决 OpenSSL 版本不匹配问题
由于 Conda 环境中的 OpenSSH 和系统中的 OpenSSL 版本不兼容,导致了版本不匹配问题。可以通过 Conda 的 conda-forge
仓库安装 OpenSSH 来解决此问题。
步骤:
- 打开终端,激活 Conda 环境(如果未激活)。
- 运行以下命令安装
openssh
:conda install -c conda-forge openssh
安装完成后,再次运行 ssh -V
,确认版本不匹配问题已经解决。
二、解决 SSH 配置和私钥文件权限问题
在 SSH 配置文件和私钥文件中,权限过于开放会导致 SSH 拒绝使用这些文件,从而无法完成连接。我们需要严格设置这些文件的权限。
1. 设置 .ssh
目录和配置文件权限
执行以下命令,确保 .ssh
目录和配置文件权限符合 SSH 要求:
chmod 700 ~/.ssh # 设置 .ssh 目录权限
chmod 600 ~/.ssh/config # 设置 config 文件权限
2. 设置私钥文件权限
私钥文件的权限不能过于开放,建议设置为仅当前用户可读的权限(600)。假设私钥文件名为 hzrobotembodiedAI.pem
,执行以下命令:
chmod 600 ~/.ssh/hzrobotembodiedAI.pem
3. 检查文件所有者
确保 .ssh
目录和其中的文件归属于当前用户。可以使用以下命令检查和更改文件所有者:
chown $USER:$USER ~/.ssh
chown $USER:$USER ~/.ssh/config
chown $USER:$USER ~/.ssh/hzrobotembodiedAI.pem
4. 重新连接
设置完成后,在 VS Code 中再次尝试通过 SSH 远程连接服务器,应该可以顺利连接。
总结
通过以上步骤,我成功解决了 VS Code 远程连接中遇到的 OpenSSL 版本不匹配和权限问题。如果你在使用 SSH 时遇到类似的问题,可以参考以上步骤进行调整。希望本文对你有所帮助!
参考:
https://github.com/modin-project/unidist/issues/314