Pytanie Ustawianie niestandardowej ścieżki dla prywatnego klucza SSH git na Linuksie


Próbuję skonfigurować klienta git na Linuksie. Przesłałem mój klucz prywatny do komputera i rozumiem, że powinienem umieścić go w ~ / .ssh, ale nie mam dostępu do tego folderu.

Jak mogę powiedzieć gitowi, aby szukał prywatnego klucza gdzie indziej?


29
2018-03-16 10:13


pochodzenie




Odpowiedzi:


Jedną z opcji jest użycie ssh-agent i podaj nazwę pliku ssh-add.

Na przykład:

$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa

40
2018-03-16 10:22



Nie działało. $ ssh-agent / bin / bash $ ssh-add / home / deepakkv / gitkeys / id_rsa Dodano: / home / deepakkv / gitkeys / id_rsa (/ home / deepakkv / gitkeys / id_rsa) $ git push origin master Odmowa uprawnień (publickey ). fatal: zdalny koniec zawiesił się niespodziewanie $ - deepujain
git użył twojego prywatnego klucza, więc wygląda na to, że ta część działała. Prawdopodobnie czegoś brakuje na stronie serwera (niewłaściwy klucz, klucz niezarejestrowany itp.) Możesz zadać nowe pytanie. - vhallac


Możesz to osiągnąć za pomocą a plik konfiguracyjny ssh.

Najpierw utwórz plik w swoim ~/.ssh folder o nazwie configmożesz użyć polecenia podobnego do poniższego

$ nano ~/.ssh/config

Następnie zawartość pliku powinna mieć lokalizację klucza w oparciu o nazwę każdego hosta. na przykład:

Host github.com
 IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
 IdentityFile ~/myPublicKeyFolder/myHerokuFile

Tak więc, gdy git spróbuje uzyskać dostęp do każdego hosta, będzie postępować zgodnie z regułami zawartymi w tym pliku konfiguracyjnym na podstawie hosta git, do którego próbuje dotrzeć


46
2018-04-28 14:33



To całkiem fajne, ponieważ działa również na git w oknach. - Piotr Findeisen
Nie działa w systemie Linux. - deepujain
@deepujain który linux? - Felipe Sabino


powiedziałbym wstaw nazwę pliku ~/.ssh/config, ale prawdopodobnie nie będziesz mieć dostępu również do tego pliku.

Możesz dać ssh klucz prywatny do używania z -i keyfile opcja.

Teraz, jak powiedzieć git, które opcje przejść do ssh?

The Strona GitTips mówi: utwórz skrypt otoki i wskaż go za pomocą GIT_SSH Zmienna środowiskowa.

Wygląda na to, że możesz również użyć konfiguracji git core.gitProxy, ale nie znalazłem dobrego przykładu i wiadomość z listą dyskusyjną sugeruje, że jest to tylko dla git: protokół.


11
2018-03-16 11:45



@ dragon788 dzięki za naprawienie linku, ale mógłbyś połączyć się z odpowiednią sekcją na tej stronie (tak jak ja teraz). (Tylko podpowiedź na następny raz.) - Paŭlo Ebermann
Nie byłem do końca pewien na podstawie oryginalnej nazwy artykułu i tego, czy był on celowo określony w danej sekcji, ponieważ nazwa tego linku brzmiała "Strona Gittipsa", czyli tam, gdzie teraz wskazuje. Kusiło mnie też, aby dodać GIT_SSH_COMMAND, ponieważ jest to obecnie obsługiwana zmienna środowiskowa, ale w tamtym czasie chciałem tylko naprawić zepsuty link. - dragon788


Użyj ssh-agent

ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'

4
2018-05-12 06:52





W przypadku projektu, nad którym pracuję, muszę wypluć skrypt powłoki zawierający wszystkie polecenia git do init / commit / push do zewnętrznego repozytorium. Plik ~ / .ssh / config jest wyłączony, więc mam moje klucze publiczne / prywatne w katalogu mojej aplikacji. Użyłem odpowiedzi Vhallaca. Oto, co musiałem zrobić w skrypcie powłoki, aby użyć mojego klucza:

eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa

mam nadzieję, że to pomoże komuś


1
2018-03-08 17:16