前言
在搭建 Hadoop + Spark 的高可用集群环境时,使用 JetBrains Gateway 可以实现便捷的远程开发。但在初次部署时,出现了一连串的连接失败问题,本文将详细记录排查过程及解决方法,以备后用。
1. host-status 命令执行失败
初次连接 Gateway 时遇到以下报错:
com.jetbrains.gateway.ssh.deploy.DeployException:
An error occurred while executing command: 'host-status --ide-path=... --project-path=...'
排查方向
- 路径是否存在: 登录服务器,确认
--ide-path与--project-path路径真实存在且可访问。 - 权限是否足够: 使用
ls -ld检查对应目录的读写权限。 - 远程脚本是否影响: 查看远程登录时是否存在
.bashrc或/etc/bashrc输出干扰。
2. clash 脚本引起 shell 输出异常
进一步查看日志发现:
/etc/bashrc: line 93: /home/xx/opt/software/clash/clashctl.sh: Permission denied
原因
远程机器在 shell 启动时会执行 clash 的脚本,导致 JetBrains 启动流程中断。
解决方法
修改
/etc/bashrc或用户的~/.bashrc,将脚本调用改为仅在交互式 shell 中执行:if [[ $- == *i* ]]; then /home/xx/opt/software/clash/clashctl.sh fi修复 clash 脚本权限:
chmod a+x /home/xx/opt/software/clash/clashctl.sh
3. SFTP 子系统连接失败
在 JetBrains Gateway 下载日志阶段报错:
SFTP session can not be started. Reason: Timeout waiting for response from SFTP subsystem
排查步骤
- 检查 SSH 配置:
grep Subsystem /etc/ssh/sshd_config
确认输出类似:
Subsystem sftp /usr/libexec/openssh/sftp-server
- 重启 SSH 服务:
sudo systemctl restart sshd
- 确保 shell 在非交互式会话中不输出任何内容(用
ssh user@host "true"验证是否干净)。
4. 重启后验证
完成上述操作后重启远程服务器或 SSH 服务,并重新连接 JetBrains Gateway:
sudo reboot
或
sudo systemctl restart sshd
总结
JetBrains Gateway 提供了非常方便的远程开发能力,但在大数据集群环境中,由于 shell 脚本、服务进程、权限控制等因素,常会引发连接失败。通过合理配置 bashrc、修复脚本权限和清理输出,可以顺利完成连接。