返回

SSH 跳转代理访问 HPC 计算节点故障排除指南:逐步解决连接错误

Linux

使用 SSH 跳转代理访问 HPC 计算节点的故障排除指南

作为一名经验丰富的程序员,我最近遇到了一个恼人的问题:无法使用 SSH 跳转代理访问 HPC 计算节点。经过一番调试,我找到了解决方案,并准备与你分享这个故障排除指南。

SSH 跳转代理简介

SSH 跳转代理是一种在不直接连接目标服务器的情况下,通过中间服务器访问目标服务器的便捷方法。此方法常用于加强安全性、避免网络限制,或实现多级身份验证。

故障现象和解决方案

当我尝试使用 SSH 跳转代理(ssh -J <username>@loginnode computenode)访问 HPC 计算节点时,却遇到了 Connection closed by UNKNOWN port 65535 错误。以下是我逐步解决此问题的步骤:

1. 验证密钥认证

首先,我检查了公钥是否已添加到远程登录节点的 authorized_key 文件中。经过确认,公钥确实存在,无需进行身份验证提示。

2. 检查网络设置

接下来,我检查了网络连接,发现计算机和 HPC 集群之间确实存在网络连接,且防火墙允许通过 SSH 端口(默认情况下为 22)进行连接。

3. 查看 SSH 配置

在排除掉网络问题后,我检查了登录节点上的 SSH 配置文件(通常为 /etc/ssh/sshd_config),确保允许 SSH 跳转代理。我找到了以下配置选项,并确保它们都设置为 yes

AllowTcpForwarding yes
AllowAgentForwarding yes

4. 重启 SSH 服务

配置完成后,我重启了登录节点上的 SSH 服务,使配置更改生效。

5. 使用 SSH config 文件

为了简化 SSH 跳转代理的使用,我创建了一个 SSH config 文件(通常为 ~/.ssh/config),并添加了以下内容:

Host computenode
    Hostname computenode
    ProxyJump username@loginnode

6. 从 VSCode 访问计算节点

最后,我在 VSCode 中使用了 Remote - SSH 扩展,并在 settings.json 文件中添加了以下内容:

"remote.SSH.configPath": "~/.ssh/config"

然后打开一个新的终端,运行以下命令:

ssh computenode

经过以上步骤,我终于成功使用 SSH 跳转代理访问了 HPC 计算节点。

其他注意事项

除了上述步骤外,我还需要注意以下事项:

  • 确保 computenode 是计算节点的正确主机名。
  • 确保登录节点的用户名与 SSH 跳转代理中使用的用户名相同。
  • 检查计算节点上是否启用了双因素身份验证,并确保你已在 VSCode 中正确配置了身份验证方法。

常见问题解答

Q1:为什么我会收到 Connection closed by UNKNOWN port 65535 错误?
A1:此错误通常表明 SSH 服务未正确配置或未在登录节点上运行。

Q2:如何验证密钥认证?
A2:使用 -vvv 选项运行 ssh 命令,查看所需的密钥文件。

Q3:如何检查网络设置?
A3:确保计算机和 HPC 集群之间有网络连接,并且防火墙允许 SSH 端口流量。

Q4:如何使用 SSH config 文件?
A4:创建 .ssh/config 文件,并添加配置信息,如主机名、用户名和代理跳转信息。

Q5:如何在 VSCode 中访问计算节点?
A5:安装 Remote - SSH 扩展,并在 settings.json 文件中配置 SSH config 文件路径。