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

Как настроить агент SSH для установки пользователя на второй переход?

Можно ли подключиться к веб-серверу, а затем подключиться к серверу git с помощью агента SSH, если для второго перехода нужен другой пользователь?

Это сработает, если я передам имя пользователя явно.

$ ssh web.example.com
# connects

  > ssh -T yellow@git.example.com
  > # connects

Это не сработает, если я полагаюсь на конфигурацию SSH для установки пользователя.

$ ssh web.example.com
# connects

  > ssh -T git.example.com
  > # permission denied

Вот конфигурация SSH на моей машине.

Host web.example.com
  User blue
  ForwardAgent yes

Host git.example.com
  User yellow

В выводе отладки говорится, что аутентификация как blue хотя конфигурация устанавливает пользователя на yellow для хозяина.

debug1: Authenticating to git.example.com:22 as 'blue'

Почему он использует не того пользователя? Я не хочу жестко программировать пользователя, потому что тогда для всей команды не получится использовать один и тот же сценарий развертывания.

Я предпочитаю устанавливать все настройки явно в моем ~/.ssh/config с коротким псевдонимом для каждого хоста. Таким образом, мне не нужно будет использовать какие-либо флаги командной строки, и я могу просто ввести меньше и использовать ssh Destination и покончить с этим.

Host web
    Hostname web.example.com
    User blue
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X 
    IdentityFile ~/.ssh/id_rsa.blue

Host git
    Hostname git.example.com
    User yellow 
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X
    IdentityFile ~/.ssh/id_rsa.yellow
    ProxyJump web

ProxyJump - относительно новая настройка, которую я считаю более интуитивно понятной, чем ProxyCommand. Сейчас ssh git будет делать именно то, что вам нужно, сначала создайте сеанс, используя blue@web.example.com как первый переход, из которого вы переходите к следующему переходу с помощью yellow@git.example.com.

Вы также можете использовать команду ProxyJump непосредственно из командной строки:

ssh -J blue@web.example.com yellow@git.example.com