Używam Mac OS X Lion i loguję zdalnych hostów przez SSH każdego dnia. Pomimo faktu, że używam pary kluczy SSH do zdalnego uwierzytelniania i nie muszę zmotoryzować frazy logowania każdego hosta, nadal bardzo denerwujące jest to, że terminal prosi o podanie hasła dostępu do mojego prywatnego klucza SSH.
Myślę, że ze względów bezpieczeństwa konieczne jest hasło dostępu do prywatnego klucza SSH. Czy istnieje sposób, który sprawia, że terminal pyta o frazę tylko raz podczas uruchamiania, a następnie zapamiętuje ją i automatycznie używa mojego klucza prywatnego w późniejszych sesjach SSH?
Istnieje skrypt o nazwie, keychain
który działa dobrze w Gentoo Linux. Ale nigdy nie wymyśliłem tego na Mac OS X Lion. Co więcej, istnieje tak wiele zastraszające terminy, takie jak ssh-agent
, ssh-add
. Po przeczytaniu różnych materiałów na temat tych zestawów narzędzi SSH i przeprowadzeniu sfrustrowanych eksperymentów stałem się bardziej zdezorientowany.
Dlatego przyszedłem do StackExchange, szukając porady na następujące pytania.
- Jakie są
ssh-agent
,ssh-add
,keychain
,Keychain Access.app
i jak współdziałają one ze sobą? - Jak mogę wprowadzić hasło dla mojego klucza prywatnego SSH raz podczas logowania i używać go swobodnie przy późniejszym tworzeniu sesji SSH?
- Errr ... Co jest nie tak
Keychain Access.app
? Nie przechowuje wyrażenia SSH tak jak wcześniej.
Wymieniam to, co tutaj zrobiłem. Mam nadzieję, że istnieją wskazówki na temat kroków, które przegapiłem.
Krok 1. Utwórz parę kluczy SSH na moim komputerze Mac.
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Krok 2. Skopiuj mój klucz publiczny SSH na zdalny host. Na przykład kopiuję klucz do localhost, Mac.
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Krok 3. Następnie spróbuj połączyć się ze zdalnym hostem (tutaj host lokalny), poprzez uwierzytelnianie parą kluczy SSH.
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Krok 4. Wyloguj się ze zdalnego hosta i spróbuj połączyć się z nim ponownie. Cholera, terminal znów prosi o zwrot SSH.
Często zadawane pytanie brzmi: „Czy ssh-agent działa dobrze na komputerze Mac?”. Szczerze mówiąc, nie mam pojęcia, co się dzieje z tymi rzeczami. Tutaj pokaż niektóre wyniki biegania.
$ 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
Wszelkie opinie są mile widziane. Dzięki!