Double ssh запрашивает пароль для разблокировки ключа RSA, но этого не должно быть

Double ssh запрашивает пароль для разблокировки ключа RSA, но этого не должно быть

У меня есть две машины, 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.

Связанный контент