3

Мне нужно, чтобы группа пользователей перепрыгнула через сервер («бастион») на другую машину («дест») через ssh для фиксации кода.

Похоже, мои варианты:

  1. попросите пользователей использовать ProxyCommand в их файле .ssh/config, например:

    Host dest
    ProxyCommand ssh -q bastion nc -q0 dest 22

  2. используйте ForceCommand в конфигурационном файле sshd, например

    Match Group hopUsers
    ForceCommand ssh dest $SSH_ORIGINAL_COMMAND

  3. используйте параметр 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 в режиме прокси, но я не могу заставить его работать.

Любая помощь будет принята с благодарностью.

1 ответ1

3

Решение оказалось:

На стороне клиента в .ssh/config:

Host dest
    ProxyCommand ssh -q bastion

На стороне сервера, в sshd_config:

Match Group hopUsers
        ForceCommand nc -q0 dest port

Пользовательские authorized_keys на сервере не требуют никакой command= .

Теперь, если пользователь пытается сделать что-то еще (например, запускает ssh без ProxyCommand), все, что он получает - это вывод netcat

$ ssh user@bastion
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2

Спасибо ребятам #openssh на freenode.

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