Eclipse远程SSH连接认证失败问题排查求助
Eclipse 2023-09 SSH远程连接Auth fail问题排查
问题场景
我使用Eclipse 2023-09配置PHP项目远程同步,通过SSH连接服务器。本地命令行可通过以下命令无密码登录:
ssh -i ~/.ssh/id_ed25519 user@example.com ssh user@example.com
配置操作
- 通过向导完成初始配置后,在
Preferences->Remote Development->Remote Connections中确认用户名、主机名正确,选择Public key based authentication - 在
Preferences->General->Network Connection->SSH2中添加id_ed25519私钥
遇到的错误
- 首次连接提示Auth fail,错误控制台显示
An error occurred loading the SSH2 private keys - 更换RSA 4096/1024位密钥(命令行可正常登录),Eclipse报错:
com.jcraft.jsch.JSchException: invalid privatekey: [B@60eebf90
- 按JSch要求生成PEM格式RSA密钥:
ssh-keygen -t rsa -b 4096 -m PEM -f ~/.ssh/id_eclipse
命令行可正常登录,Eclipse也能加载该密钥,但连接仍提示Auth fail,无额外日志输出
排查步骤
1. 确认服务器端公钥部署与权限
- 登录目标服务器,检查
~/.ssh/authorized_keys文件是否包含id_eclipse.pub的完整内容,确保没有多余换行或空格 - 修正文件权限:
SSH对权限要求严格,权限过宽会直接拒绝密钥认证chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
2. 核对Eclipse SSH配置细节
- 打开
Preferences->General->Network Connection->SSH2:- 切换到Known Hosts标签,确认目标服务器的主机密钥已存在;若不存在,先通过命令行
ssh user@example.com确认主机密钥,重启Eclipse后再尝试 - 在Private Keys标签中,移除所有无关私钥,仅保留
id_eclipse,避免密钥冲突
- 切换到Known Hosts标签,确认目标服务器的主机密钥已存在;若不存在,先通过命令行
- 检查
Remote Connections配置中,是否误填了端口号(默认22,若服务器端口非22需手动指定)
3. 验证JSch版本与兼容性
Eclipse内置的JSch库可能存在版本限制:
- 查看Eclipse安装目录下
plugins文件夹,找到名称包含com.jcraft.jsch的jar包,确认版本;若版本低于0.1.55,可通过Eclipse Marketplace搜索并更新JSch插件 - 若无法更新插件,可手动替换该jar包(需下载对应版本的JSch jar,替换后重启Eclipse)
4. 启用详细调试日志
- 打开Eclipse,依次点击
Run->Debug Configurations,创建新的Remote Java Application配置:- 在
Connection Properties中设置主机为localhost,端口为Eclipse的调试端口(默认8000,可在eclipse.ini中添加-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000开启) - 在
VM arguments中添加-Dcom.jcraft.jsch.debug=DEBUG
- 在
- 启动调试后尝试连接服务器,查看控制台输出的详细日志,定位认证失败的具体环节(如服务器是否接收密钥、是否返回错误码)
5. 检查服务器SSH服务配置
- 登录服务器,编辑
/etc/ssh/sshd_config:- 确保
PubkeyAuthentication yes未被注释 - 确认
AuthorizedKeysFile路径为~/.ssh/authorized_keys(默认配置) - 若服务器启用SELinux,执行
setenforce 0临时关闭,再测试连接;若恢复正常,需调整SELinux策略允许SSH密钥认证
- 确保
- 重启SSH服务:
systemctl restart sshd
内容的提问来源于stack exchange,提问作者Lars Hanke
相关产品推荐
相关产品推荐

