Мне нужно, чтобы группа пользователей перепрыгнула через сервер («бастион») на другую машину («дест») через ssh для фиксации кода.
Похоже, мои варианты:
попросите пользователей использовать
ProxyCommand
в их файле .ssh/config, например:Host dest
ProxyCommand ssh -q bastion nc -q0 dest 22
используйте
ForceCommand
в конфигурационном файле sshd, напримерMatch Group hopUsers
ForceCommand ssh dest $SSH_ORIGINAL_COMMAND
используйте параметр
command
в файле пользователей.ssh/authorized_keys
, напримерcommand="ssh dest"
Первое решение великолепно, оно работает с коммитами Mercual и т.д. - Проблема в том, что я не хочу предоставлять своим пользователям корректную оболочку на bastion
компьютере. Я мог бы установить для своей оболочки входа значение /bin /false, но это оставляет целый ряд проблем без присмотра (см. Здесь) - если, возможно, это не связано с выделенным набором опций (например, noX11Forwarding) в файле конфигурации sshd
в разделе Match
,
Проблема со вторым и третьим решением заключается в том, что аутентификация с открытым ключом «потеряна», т.е. если клиент не использует опцию -A
при запуске ssh, сервер ответит:
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: .ssh/XXXXXX
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_ALL = en_US.UTF-8
debug1: Sending env LANG = en_US.UTF-8
Следовательно, запрашивая пароль пользователя. Это не приемлемо.
Я думаю, что есть что-то, что можно сделать с помощью nc
в режиме прокси, но я не могу заставить его работать.
Любая помощь будет принята с благодарностью.