SVN + SSH, nie musisz za każdym razem dodawać ssh-add? (System operacyjny Mac)


105

Wiem, że odpowiedź jest tam, ale jestem dość głupi na Uniksie i prawdopodobnie nie rozpoznałbym rozwiązania, gdyby uderzyło mnie to w twarz.

Jestem na komputerze Mac i łączę się z serwerem SVN przez tunelowanie SSH. Muszę za ssh-add privateKey.txtkażdym razem, gdy chcę połączyć się z serwerem SVN (zarówno Cornerstone, jak i Xcode łączą się z SVN).

Czy istnieje sposób na „zapisanie” klucza gdzieś, abym nie musiał tego robić za każdym razem? Dodać go do mojego pęku kluczy? Jakiś plik konfiguracyjny? Uruchomić skrypt?

Odpowiedzi:


172

Najpierw przenieś plik klucza prywatnego do ~/.ssh. Nie jest to bezwzględnie konieczne, ale to standardowe miejsce na takie rzeczy.

Następnie biegnij ssh-add -K ~/.ssh/privateKey.txt. W razie potrzeby poprosi o podanie hasła, a następnie doda je do pęku kluczy.

Po tym nie powinieneś już nic robić. Tutaj dostępne jest nieco dłuższe wyjaśnienie .


17
Wydaje mi się, że warto wyraźnie zauważyć, że jest to sprawa Maca, a nie uniwersalna rzecz z Uniksem. W Ubuntu ssh-addnie można się -Kkłócić.
Mark Amery,

2
Chciałbym zauważyć, że chociaż linkowany artykuł dotyczy Leoparda, to nadal działa w systemie OS X Mavericks.
Josh Brown

1
Może ktoś ma równoważne polecenie dla innych środowisk? mysysgit's ssh-add również nie akceptuje argumentu -K
Blake

5
Z jakiegoś powodu kiedy mam -KI nadal mam problem po restarcie
Mat Teague

7
Czy korzystasz z macOS Sierra? Zachowanie się zmieniło i teraz musisz jawnie dodać swoje klucze do ssh-agent podczas logowania: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley

49

Przechowywanie haseł w pęku kluczy

Aby zapisać hasło do domyślnego klucza w pęku kluczy, otwórz Terminal i uruchom:

ssh-add -K

Aby zapisać hasło dla innego uruchomienia klucza:

ssh-add -K /path/to/private/key/file

Po wyświetleniu monitu o hasło wprowadź je i to wszystko.

Nigdy nie będziesz musiał uruchamiać ssh-add ani ponownie wprowadzać hasła.

Odpowiedź pobrana z tej strony: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


20

Myślę, że po wielu poszukiwaniach znalazłem pełną odpowiedź na ten problem. Najpierw upewnij się, że takssh-add -K ~/.ssh/your_key_here . Spowoduje to dodanie klucza do pęku kluczy. W niektórych miejscach czytałem, że to wystarczy, ale nie byłem pewien. Jest to również specyficzne dla komputerów Mac, więc jeśli musisz to zrobić na innym smaku uniksowym, niekoniecznie będziesz mieć tę opcję.

Na ~/.ssh/configwszelki wypadek wyedytowałem plik (być może trzeba będzie go utworzyć), aby wskazywał na wszystkie posiadane przeze mnie klucze. Mój ma następujące elementy:

IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa 
IdentityFile ~/.ssh/my_other_identity_here
IdentityFile ~/.ssh/yet_another_identity_here

Zgodnie ze stroną podręcznika man dla ssh_config, spróbuje je po kolei. Nie jestem pewien, czy pierwsze trzy domyślne, które wymieniłem, muszą tam być, ale i tak je uwzględniłem.


Nie ma -Kflagi na Mac OS X dlassh-add
dr.dimitru

2
Nie jest-K flaga na OS X ssh-add. Dodatkowo powinna to być wybrana odpowiedź.
kaiser

1
Upewnij się, że używasz /usr/bin/ssh-adddostarczonego homebrew, /usr/local/bin/ssh-addktóry nie zawiera opcji -K.
Remco Wendt

2
Gdy już ~/.ssh/configjest, nie ma potrzeby uruchamiania ssh-addpolecenia za każdym razem po ponownym uruchomieniu komputera.
hailong

7

Od macOS 10.12.2 możesz użyć UseKeychainopcji. Przeczytaj więcej tutaj lub zajrzyj do man ssh_config.

     UseKeychain
         On macOS, specifies whether the system should search for passphrases in the user's keychain
         when attempting to use a particular key. When the passphrase is provided by the user, this
         option also specifies whether the passphrase should be stored into the keychain once it has
         been verified to be correct.  The argument must be ``yes'' or ``no''.  The default is ``no''.

Więc wykonaj następujące czynności:

echo "UseKeychain yes" >> ~/.ssh/config


3
To musi wzrosnąć. Bardzo ważne !
quarezz


1

sshkeychain jest jedną z możliwości. instaluje się dobrze z macportami przy użyciu:

sudo port install sshkeychain

używa pęku kluczy do przechowywania haseł i możesz go po prostu uruchomić podczas uruchamiania sesji logowania (używając przy pierwszym uruchomieniu zwykłego kliknięcia prawym przyciskiem myszy na ikonę stacji dokującej + „uruchom przy starcie”)

Zwróć uwagę, że svn firmy Apple używa pęku kluczy do przechowywania haseł, ale niekoniecznie pliku binarnego svn, który utworzyłbyś za pomocą macports.


0

Dodaj swój klucz do pęku kluczy, uruchamiając:

ssh-add -K ~/.ssh/id_rsa

i edytuj swój ~/.ssh/configplik config ( ) ssh , aby automatycznie ładować klucze z łańcucha kluczy do ssh-agent ( AddKeysToAgent yesopcja) i przechowywać hasła w pęku kluczy ( UseKeychain yesopcja):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.