无法通过SSH登录AWS中的Jenkins实例,寻求可行解决方案
解决Jenkins实例SSH登录密钥短语问题的方案
一、替代SSH登录方式
跳板机代理转发登录:不用单独输入密钥短语,直接在本地通过跳板机做代理。执行命令:
ssh -o ProxyCommand="ssh -W %h:%p 跳板机用户名@跳板机IP" Jenkins实例用户名@Jenkins实例IP
这个命令会复用你登录跳板机的会话,直接连接Jenkins实例。另外可以去跳板机的~/.ssh/目录里找一找,看有没有遗留的Jenkins实例密钥文件(比如.pem或.id_rsa后缀),如果有,直接在跳板机上执行:ssh -i /path/to/jenkins-key-file Jenkins实例用户名@Jenkins实例IPAWS SSM直接登录:如果Jenkins实例装了SSM Agent(AWS官方AMI基本都自带),用AWS CLI就能直接登录,完全绕开SSH密钥:
- 本地装好AWS CLI,配置好有权限的AWS账号(需要
ssm:StartSession权限) - 执行:
aws ssm start-session --target <Jenkins实例的EC2 ID>
这种方式连跳板机都不用,直接从本地进入实例终端。
- 本地装好AWS CLI,配置好有权限的AWS账号(需要
二、关于绕过密钥短语
密钥短语是加密SSH私钥用的,没有合法的绕过方法。但可以试试找未加密的私钥副本:
- 检查跳板机的
~/.ssh/config文件,看有没有针对Jenkins实例的配置,里面可能指定了无密码短语的密钥路径。 - 跑
history命令看跳板机的历史操作记录,有没有之前登录Jenkins实例的完整命令,可能带了密钥文件路径。 - 去AWS控制台的Secrets Manager或Parameter Store里搜一搜,说不定离职的DevOps把密钥存在那里了。
三、白名单弹性IP的方案
如果你的本地机器有固定公网IP,可以修改Jenkins实例的安全组,直接允许你的IP访问22端口:
- 登录AWS控制台,找到Jenkins实例对应的安全组
- 添加入站规则:协议选SSH(22),来源填你的本地公网IP/32
- 保存后直接从本地尝试SSH登录(但还是需要正确的密钥及短语,除非用上面的SSM方式)
这个方法只是跳过跳板机,解决不了密钥短语的问题,但能简化登录流程。
四、应急重置方案
如果你有AWS管理员权限,能接受Jenkins停机,可以重置实例的登录密钥:
- 先停止Jenkins实例,提前备份好Jenkins的工作区、配置文件(比如
/var/lib/jenkins/目录) - 分离实例的根卷,挂载到另一台正常运行的EC2实例上
- 编辑挂载卷里的
/home/用户名/.ssh/authorized_keys,替换成你自己的公钥 - 把根卷重新挂载回Jenkins实例,启动后用你的密钥登录
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

