Я використовую 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?
- Помилка ... Що з цим
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 на віддалений хост. Для прикладу я копіюю ключ до localhost, 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-агент на вашому 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
Будь-який відгук вітається. Спасибі!