Uso Mac OS X Lion e accedo agli host remoti tramite SSH ogni giorno. Nonostante io utilizzi la coppia di chiavi SSH per l'autenticazione remota e non ho bisogno di motorizzare la frase di accesso di ogni host, è ancora molto fastidioso che il terminale richieda la passphrase per accedere alla mia chiave privata SSH.
Per motivi di sicurezza, penso che sia necessaria una passphrase per l'accesso alla chiave privata SSH. Esiste un modo che consente al terminale di chiedere la frase esattamente una sola volta all'avvio, quindi di memorizzarla e di utilizzare automaticamente la mia chiave privata nelle sessioni SSH successive?
C'è uno script chiamato keychain
che funziona bene su Gentoo Linux. Ma non l'ho mai capito su Mac OS X Lion. Cosa c'è di più, ci sono tanti termini intimidatorio, come ad esempio ssh-agent
, ssh-add
. Dopo aver letto vari materiali su quei toolkit SSH e aver fatto alcuni esperimenti frustrati, sono diventato più confuso.
Pertanto, sono venuto su StackExchange, alla ricerca di alcuni consigli sulle seguenti domande.
- Quali sono
ssh-agent
,ssh-add
,keychain
,Keychain Access.app
e come interagiscono tra loro? - Come posso inserire la passphrase per la mia chiave privata SSH una volta al login e usarla liberamente alla successiva creazione della sessione SSH?
- Errr ... Cosa c'è che non va
Keychain Access.app
? Non memorizza la frase SSH come prima.
Elenco quello che ho fatto qui. Spero che ci siano indizi sui passi che ho perso.
Passaggio 1. Creare una coppia di chiavi SSH sul mio Mac.
$ ssh-keygen -t rsa -C "me@email.com"
# Set a passphrase for accessing the private key.
Passaggio 2. Copia la mia chiave pubblica SSH sull'host remoto. Per fare un esempio, copio la chiave su localhost, Mac.
$ ssh-copy-id USER@localhost
# Enter the login password for USER at localhost, not my SSH passphrase
Passaggio 3. Quindi provare a connettersi all'host remoto (localhost qui), tramite l'autenticazione della coppia di chiavi SSH.
$ ssh USER@locahost
Enter passphrase for key '/Users/YOUR_ACCOUNT/.ssh/id_rsa':
# Enter my SSH passphrase, not the login password.
Passaggio 4. Disconnettersi dall'host remoto e provare a connettersi nuovamente ad esso. Dannazione, il terminale chiede di nuovo la frase SSH.
Una domanda frequente è che "ssh-agent funziona bene sul tuo Mac?". Francamente, non ho idea di cosa stia succedendo. Qui mostra alcuni risultati in esecuzione.
$ 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
Qualsiasi feedback è il benvenuto. Grazie!