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?

James J.
źródło

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 .

Nicholas Riley
źródło
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

Adam
źródło
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.

mitalia
źródło
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

Ben
źródło
3
To musi wzrosnąć. Bardzo ważne !
quarezz
2

Nie mam dużego doświadczenia z komputerami Mac, więc nie jestem pewien, czy ta wersja jest odpowiednia dla Ciebie, ale spójrz na http://www.phil.uu.nl/~xges/ssh/

Jeśli ta konkretna aplikacja nie działa, to i tak tego szukasz - ssh agent. Na komputerach typu unix chciałbyś uruchomić przez to całego menedżera okien, aby uzyskać efekt globalny, ale może nie być to możliwe w osx.

Więcej informacji: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

viraptor
źródło
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.

meduz
źródło
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
Jakub Kukul
źródło