Можно ли подключиться к веб-серверу, а затем подключиться к серверу 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