当我尝试通过 SSH 连接到我的某个 EC2 实例时,它运行正常:
ssh -i "jason.pem" [email protected]
# the above works
当我尝试eb ssh
这样做时,它不起作用。奇怪的是,它在今天之前的几个月里一直有效,但现在却不起作用了,尽管我无法想象有什么变化。以下是失败的原因:
INFO: Attempting to open port 22.
INFO: SSH port 22 open.
INFO: Running ssh -i /Users/jasonswett/.ssh/jason.pem [email protected]
[email protected]: Permission denied (publickey).
ERROR: An error occurred while running: ssh.
我该如何解决这个问题?
编辑:
我已经将问题隔离到一定程度。
这有效:
ssh -i 'jason.pem' [email protected]
但这不行:
ssh -i /Users/jasonswett/.ssh/jason.pem [email protected]
显然,区别在于传递给标志的值-i
。不幸的是,目前使用的是第二个不起作用的命令eb ssh
。
我仍然不明白为什么这会产生影响或者我能做些什么来解决这个问题。
编辑2:
根据@KJH 的建议,我尝试使用该标志运行上述每个命令-v
。
这是该版本的输出'jason.pem'
:
ssh -i 'jason.pem' [email protected] -v
Warning: Identity file jason.pem not accessible: No such file or directory.
OpenSSH_7.8p1, OpenSSL 1.0.2p 14 Aug 2018
debug1: Reading configuration data /usr/local/etc/ssh/ssh_config
debug1: Connecting to 34.222.8.173 [34.222.8.173] port 22.
debug1: Connection established.
debug1: identity file /Users/jasonswett/.ssh/id_rsa type 0
因此,令人惊讶的是,该命令之所以有效,是因为指定的标识文件不存在。显然,它正在恢复默认设置,而/Users/jasonswett/.ssh/id_rsa
该设置确实存在。
因此,显然我的 EB CLI 配置中某处显示“运行/Users/jasonswett/.ssh/jason.pem
时用于标识文件eb ssh
”,我必须将其更改为指定/Users/jasonswett/.ssh/id_rsa
或不指定任何内容。但到目前为止,我还没有找到该配置指令的设置位置。
答案1
我不认为这是唯一可行的解决方案,但我能够通过运行eb ssh --setup
并生成新的密钥对来解决我的问题。现在,裸eb ssh
命令可以正常工作。