Я хотел бы создать SSH-соединение от localhost , которое проходило бы через host1 и подключалось к host2 .

На моей локальной машине работает macOS. host1 и host2 - это машины AWS, для аутентификации которых требуются файлы PEM.

Я запускаю следующую команду:

$ ssh -i cert.pem -L 9999:localhost:9999 user@host1-ip ssh -L 9999:localhost:1234 -N user2@host2-ip

И получите следующую ошибку:

Permission denied (publickey).

Как я могу сделать эту работу?

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .