Назад | Перейти на главную страницу

«Тупой» SSH-прокси

Большинству наших разработчиков нужен SSH-доступ к некоторой внутренней инфраструктуре Google Cloud. В настоящее время мы с этим справляемся, используя хост-бастион и заставляя пользователей изменять свою конфигурацию SSH, чтобы включить что-то вроде следующего:

Host *
    ProxyCommand ssh -q bastion.hostname.com 'nc %h %p'

Мы уходим от хоста-бастиона + SSH-ключи метаданных к использованию Вход в ОС, но мы стараемся свести к минимуму неудобства для наших разработчиков. В идеале я бы хотел использовать что-то вроде этого:

Host *
    ProxyCommand gcloud compute ssh --ssh-key-file="${HOME}/.ssh/id_rsa" --internal-ip "%h"

Однако это не работает. При запуске с включенными подробными настройками зависает:

debug1: Next authentication method: publickey
debug1: Offering public key: /Users/mrllama/.ssh/id_rsa RSA SHA256:[SNIP] explicit
debug1: Server accepts key: /Users/mrllama/.ssh/id_rsa RSA SHA256:[SNIP] explicit
debug1: Authentication succeeded (publickey).
Authenticated to [INTERNAL_IP] (via proxy).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: proc
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Requesting authentication agent forwarding.

Обратите внимание, что это gcloud compute ssh команда работает сама по себе и помещает пользователя в командную строку, но при использовании в качестве ProxyCommand она просто зависает. Есть ли способ заставить SSH пропустить все процедуры аутентификации после запуска ProxyCommand и вместо этого просто вернуть приглашение?