使用 macOS 的两台机器之间的 SSH 隧道

使用 macOS 的两台机器之间的 SSH 隧道

我想创建一个 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

暂时忽略示例中的端口转发部分,您需要使用ProxyCommandProxyJump指令/-J选项。从命令行尝试以下操作:

ssh -i cert.pem -J user@host1-ip user2@host2-ip

由于-JProxyJump是在 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

相关内容