本文记录如何使用 VS Code Remote-SSH 插件,通过跳板机访问 Spark/Hadoop 高可用集群,并排查典型连接失败问题,适用于无公网暴露的私有计算环境。
一、场景说明
在 Hadoop/Spark 高可用集群部署中,常见结构如下:
- 本地开发机(带 VS Code)
- 跳板机(Jump Host,例如
DELL) - 内网节点(如
node20_jump)
由于集群节点位于私有网络,外部访问需先连接跳板机,再进入目标节点。
二、SSH 配置核心示例
创建或修改本地 ~/.ssh/config 文件如下:
Host DELL
HostName xx.xx.xx.xx
Port 22
User xx
Host node20_jump
HostName xx.xx.xx.xx
User xx
Port 22
IdentityFile ~/.ssh/id_ed25519
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
ProxyJump xx@xx.xx.xx.xx
说明
DELL是中转跳板机;node20_jump是 Spark/Hadoop 节点;- 使用
ProxyJump让 SSH 自动通过 DELL 中转; - 如果私钥为
ed25519类型,需部署其公钥至目标节点。
三、VS Code 设置补充
确保 VS Code 能读取你的 config 文件:
- 打开 VS Code 设置(
settings.json); - 添加以下配置项:
"remote.SSH.configFile": "C:\\Users\\xx\\.ssh\\config"
四、排查常见问题
1. 公钥认证失败
错误日志示例:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
解决方法:
- 确认本地存在
id_ed25519和id_ed25519.pub; - 目标机器中
~/.ssh/authorized_keys包含正确的公钥内容; - 权限设置如下:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys
2. ProxyJump 未生效
可能表现为 VS Code 无法通过跳板连接,需确认:
~/.ssh/config中ProxyJump是否配置;- VS Code 设置文件中是否显式声明了
configFile路径; - 使用如下命令验证能否连通:
ssh -J DELL node20_jump
3. 跳板机到目标主机不通
在跳板机上测试连接:
ssh xx@xx.xx.xx.xx
如仍失败,需检查目标节点的 SSH 服务是否正常、公钥是否已添加,或是否存在防火墙策略阻挡。
五、实用命令小结
| 功能 | 命令示例 |
|---|---|
| 上传公钥 | ssh-copy-id -i ~/.ssh/id_ed25519.pub xx@xx.xx.xx.xx |
| 手动跳板连接 | ssh -J xx@xx.xx.xx.xx xx@xx.xx.xx.xx |
| 检查详细日志 | ssh -v node20_jump |
六、结语
使用 Remote-SSH 能显著提升 Spark/Hadoop 集群的开发效率,结合 ProxyJump 能解决多级网络隔离带来的连接限制。建议优先通过命令行调试,再将配置迁移到 VS Code 中使用。如遇其他连接问题,欢迎留言交流。