SSH ForwardAgent несколько прыжков

15

Последние два часа я безуспешно искал решение следующей проблемы.

Разработка:

Я использую аутентификацию publickey для подключения к своим серверам. Я использую переадресацию ssh-agent, чтобы не управлять открытыми / приватными ключами.

Допустим, у меня есть серверы A, B and C.

Это работает очень хорошо, если я подключусь с LOCAL ---> A ---> B.

Это также работает очень хорошо, если я делаю LOCAL ---> A ---> C.

Теперь, если я попытаюсь LOCAL ---> A ---> B ---> C, SSH не может подключиться с B to C.

Стоит отметить: я подключаюсь к серверу A в качестве ликвидности, тогда как я подключаюсь к серверу B как root. Подключение к серверу B, поскольку ликвидность решает проблему, но это не вариант для меня.

По рекомендации пользователя я использую ssh -Aкаждый раз, чтобы убедиться, что переадресация агента включена.

Я нашел один подобный вопрос, без ответа здесь: возможно ли связать пересылку ssh-agent через несколько переходов?

Согласно @Zoredache здесь: /server//a/561576/45671 Мне просто нужно настроить конфигурацию клиента в каждой промежуточной системе. Что я считаю, что я сделал.

ликвидность
источник
Подумайте об использовании ProxyCommandскачкообразной перестройки (как описано здесь ) вместо пересылки агента SSH. Для вашего подхода вам придется доверять всем машинам в цепочке, потому что они могут (ab) использовать ваши личные ключи. Мне также нравится подход ProxyCommand намного лучше, потому что известная проверка хостов выполняется локально, и, кроме того, вы можете настроить цепочку в вашей конфигурации SSH, чтобы вы могли использовать одну команду для подключения к C.
gertvdijk
Я, к сожалению, не могу использовать proxyCommand. Несмотря на соображения безопасности, мне действительно нужно использовать forwardAgent.
ликвидность
@liquidity могу я спросить тебя, почему ты не хочешь использовать proxyCommand? У меня та же проблема, и, как я понимаю, proxyCommand более безопасен. Так что я думаю, какой из них использовать ..
grep

Ответы:

13

Чтобы переадресация агента работала через несколько переходов, вам просто нужно настроить конфигурацию клиента в каждой промежуточной системе, чтобы переадресация агента.

Это может быть так же просто, как убедиться, что /etc/ssh/ssh_configэто настроено. Но если у вас есть ~/.ssh/configнастройки для каждого клиента, вам, возможно, придется изменить эти настройки.

Host *
    ForwardAgent yes

Вы можете увидеть, произошла ли переадресация агента или произошла ошибка, если вы просто добавили эту -vопцию.

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

Также убедитесь, что у вас есть допустимый набор переменных среды.

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"
Zoredache
источник
4
Стоит упомянуть флаг -A для ssh как быструю и грязную альтернативу опции ssh_config или ~ .ssh / config. -A [e] включает переадресацию соединения агента аутентификации.
dmourati
1
На каждом шаге вы можете использовать ssh-add -lсписок ключей, которые ssh считает, что может получить их через вашего агента. Убедитесь, что вы пересылаете его на каждое соединение!
MikeyB
Благодарность! Также обратите внимание, что если все сделано правильно, вам не придется вручную запускать ssh-agent на последнем сервере. Он начнется автоматически, если вы увидите строку Requesting authentication agent forwarding.в вашем отладочном выводе. Если вы попытались через .bash_profilessh запустить агент, удалите его оттуда, иначе ваш агент запустится снова без каких-либо идентификаторов.
2upmedia