Я использую Mac OS X Lion и захожу на удаленные хосты через SSH каждый день. Несмотря на то, что я использую пару ключей SSH для удаленной аутентификации, и мне не нужно моторизовывать фразу входа каждого хоста, все еще очень раздражает, что терминал запрашивает фразу-пароль для доступа к моему секретному ключу SSH.
По соображениям безопасности, я думаю, необходима пароль для доступа к закрытому ключу SSH. Есть ли способ заставить терминал запрашивать фразу только один раз при запуске, затем запоминать ее и автоматически использовать мой закрытый ключ в последующих сеансах SSH?
Есть скрипт под названием keychain
который отлично работает на Gentoo Linux. Но я никогда не понимаю это на Mac OS X Lion. Более того, существует множество пугающих терминов, таких как ssh-agent
, ssh-add
. После прочтения различных материалов о тех инструментальных средствах SSH и некоторых разочарованных экспериментах я запутался.
Поэтому я пришел в StackExchange и искал несколько советов по следующим вопросам.
- Что такое
ssh-agent
,ssh-add
,keychain
,Keychain Access.app
и как они взаимодействуют друг с другом? - Как я могу ввести пароль для моего закрытого ключа SSH один раз при входе в систему и использовать его свободно при создании сеанса SSH позже?
- Errr ... Что не так с
Keychain Access.app
? Он не хранит фразу SSH, как это было раньше.
Я перечисляю, что я сделал здесь. Надеюсь, есть подсказки о шагах, которые я пропустил.
Шаг 1. Создайте пару ключей SSH на моем Mac.
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Шаг 2. Скопируйте мой открытый ключ SSH на удаленный хост. Чтобы взять пример, я копирую ключ на локальный компьютер Mac.
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Шаг 3. Затем попробуйте подключиться к удаленному хосту (здесь localhost) через аутентификацию пары ключей SSH.
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Шаг 4 Выйдите из системы с удаленного хоста и попробуйте снова подключиться к нему. Черт возьми, терминал снова запрашивает фразу SSH.
Часто задаваемый вопрос: «Работает ли ssh-agent на вашем Mac?». Честно говоря, я понятия не имею, что происходит в этих вещах. Здесь показывают некоторые результаты бега.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(EMPTY)
$ ssh-add -l
Could not open a connection to your authentication agent.
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-Z54zXukQiP/agent.26769; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26770; export SSH_AGENT_PID;
echo Agent pid 26770;
$ ssh-add -l
Could not open a connection to your authentication agent.
$ echo $SSH_AUTH_SOCK
/tmp/launch-M48niA/Listeners
$ echo $SSH_AUTH_PID
(STILL EMPTY)
$ ssh-agent # Oh no, anther ssh-agent with different PID
SSH_AUTH_SOCK=/tmp/ssh-cx0B4FUX8B/agent.26898; export SSH_AUTH_SOCK;
SSH_AGENT_PID=26899; export SSH_AGENT_PID;
echo Agent pid 26899;
$ ps -e | grep -i ssh
26769 ?? 0:00.03 ssh-agent
26899 ?? 0:00.02 ssh-agent
Любые отзывы приветствуются. Спасибо!