У меня есть две машины, M1 и M2, обе с OS X, и третья машина, L, с Linux. У M1 и M2 ключи RSA разблокированы в связке ключей, поэтому я могу:
- ssh от M1 до M2 без запроса пароля или кодовой фразы ключа
- ssh из M2 в L без запроса пароля или кодовой фразы ключа
Однако, когда я подключаюсь по ssh с M1 на M2, а затем на L (при этом физически оставаясь на M1), он запрашивает у меня пароль ключа! Я пробовал вручную разблокировать login.keychain
с помощью security
команды, но, похоже, это не дает никакого эффекта.
Что не так? Как мне сделать дубликат ssh без ввода каких-либо паролей?
решение1
Связка ключей работает именно так, как и должна. Параметр -A пересылает загруженные ключи из M1 в M2 и далее в L. Я подозреваю, что при входе в M2 ваши ключи не инициализируются/не начинается полноценный сеанс, поскольку не происходит графический процесс входа со всеми его побочными эффектами.
Если вы хотите перенаправить своего агента куда угодно, используя ssh, вам следует создать файл ~/.ssh/config и добавить запись для хоста * с ForwardAgent, установленным на yes:
Host *
ForwardAgent yes
Кроме того, вы можете более конкретно указать, на какой хост вы хотите перенаправить своего агента, заменив * на имя хоста.
решение2
Вы пытаетесь войти в L из M2. Это означает, что M2 должен иметь ваши учетные данные (ключ и парольную фразу). Но ваши учетные данные на самом деле находятся на M1.
Вы можете скопировать свои учетные данные на M2, но тогда вам придется взаимодействовать со связкой ключей на M2. В качестве альтернативы вы можете указать M2 связаться со связкой ключей на M1, а не со связкой ключей на M2. На самом деле, это обычный метод, и в некоторых установках это работает из коробки, но, по-видимому, не в вашей.
Давать возможностьпересылка агентаиз M1 в M2. В командной строке с OpenSSH передайте опцию -A
(т.е. запустить ssh -A M2
на M1). Вы также можете поместить ForwardAgent
директиву в ~/.ssh/config
. Возможно, есть также способ сделать это с помощью GUI на OSX.