我想创建一个 SSH 连接,localhost
以便通过host1
并连接到host2
。
我的本地机器运行 macOS。host1
并且host2
是需要 PEM 文件进行身份验证的 AWS 机器。
我运行以下命令:
$ ssh -i cert.pem -L 9999:localhost:9999 user@host1-ip ssh -L 9999:localhost:1234 -N user2@host2-ip
并收到以下错误:
Permission denied (publickey).
我怎样才能让它工作?
答案1
暂时忽略示例中的端口转发部分,您需要使用ProxyCommand
或ProxyJump
指令/-J
选项。从命令行尝试以下操作:
ssh -i cert.pem -J user@host1-ip user2@host2-ip
由于-J
和ProxyJump
是在 OpenSSH 7.3(IIRC)中添加的,您可能需要ProxyCommand
在~/.ssh/config
文件中使用较旧的指令,特别是如果您ssh
的 Mac 最近没有更新。此外,这还允许您指定其他选项,例如IdentityFile
放置您的 PEM 文件,如下所示:
Host host1
User host1user
Hostname host1-ip
IdentityFile ~/.ssh/cert.pem
Host host2
User host2user
Hostname host2-ip
IdentityFile ~/.ssh/cert.pem
# hop through host1
ProxyJump host1
# or if older ssh-en, one of:
#ProxyCommand ssh -A host1 nc %h %p
#ProxyCommand ssh -A host1 -W %h:%p
有了这个,它应该很简单:
ssh host2
要添加端口转发:
ssh host2 -L 9999:localhost:1234