Chcę uruchomić ssh-agent (z opcją maksymalnego czasu życia), ale nie dodawać żadnych kluczy przy uruchamianiu, ale zamiast tego dodawać je na żądanie.
Podobnie jak przy pierwszym logowaniu do jakiegoś serwera, powinien poprosić o hasło, następnym razem (chyba że zaczekam ponad godzinę) powinien połączyć się czysto:
ssh server1
Enter passphrase for key '/home/vi/.ssh/id_dsa':
server1> ...
ssh server2
server2> # no passphrase this time
# wait for lifetime
ssh server2
Enter passphrase for key '/home/vi/.ssh/id_dsa':
Nie chcę ręcznie pamiętać o uruchamianiu „ssh-add” za każdym razem. (np. wprowadzono hasło tylko dla ssh i „Och, nie pamiętam, trzeba ponownie wpisać”).
Jak skonfigurować ssh, aby automatycznie dodawał klucz do ssh-agent, jeśli użytkownik podał hasło?
Odpowiedzi:
ssh obsługuje dodanie klucza do agenta przy pierwszym użyciu (od wersji 7.2). Możesz włączyć tę funkcję, umieszczając następujące elementy w
~/.ssh/config
:Działa to również podczas korzystania z narzędzi pochodnych, takich jak git.
Z dziennika zmian 7.2 :
źródło
Możesz oszukiwać i umieszczać coś
alias ssh='ssh-add -l || ssh-add && ssh'
na swoim.bashrc
/.profile
. To pierwsze uruchomieniessh-add -l
, które może zwrócić 0 (agent ma klucze), 1 (brak kluczy) lub 2 (agent nie działa); jeśli zwróci 0,ssh
uruchomi się; jeśli 1,ssh-add
uruchomi się, a następniessh
; jeśli 2,ssh-add
zawiedzie issh
nie zostanie uruchomiony. Wymień&&
się;
, jeśli chceszssh
uruchomić nawet wtedy, gdy nie ma bieg agentem.źródło
alias ssh-hostname='(ssh-add -l | grep hostname > /dev/null) || ssh-add ~/.ssh/id_rsa_hostname && ssh -p 12345 username@hostname'
. Możesz nawet umieścić to w pętli dla wszystkich swoich kluczy ssh i generować aliasy. Brudny hack, ale działa.Dopóki ssh nie obsługuje automatycznego wywołania-ssh-add, dodałem to w mojej
.bashrc
, na podstawie propozycji Kovensky'ego:Alias jest tworzony tylko wtedy, gdy tożsamość nie zostanie dodana, a alias sam się zniszczy po uruchomieniu.
W ten sposób zwykłe polecenie ssh jest używane po dodaniu tożsamości.
źródło
ssh-add -t ...
) klucz dodany do ssh-agent może nagle zniknąć, ale alias pozostanie, ponieważ klucz jest nadal w pamięci.Korzystam z następującej funkcji powłoki:
Najpierw rozwiązuje konfigurację hosta, z którym próbuję się połączyć, a następnie dodaje możliwe klucze dla tego hosta do agenta ssh, jeśli nie zostały jeszcze dodane, a na końcu łączy się z hostem. Jestem pewien, że można to poprawić, dlatego jestem otwarty na opinie.
źródło