Ktokolwiek głosował za „zamknięciem”, to pytanie - jest bezpośrednio związane z programowaniem z tego samego powodu, dla którego dozwolone są pytania o GIT
James Raitsev.
1
Prawdopodobnie ... To naprawdę jest pytanie superużytkownika, problem nie dotyczy git, ale platformy, na której działa. Nie możesz sprawdzić "in git" pod kątem problemu, ponieważ git nie obchodzi, dotyczy on tylko tego, jak używasz ssh i jak jest skonfigurowany. Czy używasz ssh-agent, dowolnego systemu zarządzania kluczami, jakiego systemu operacyjnego używasz, jakiej wersji itp.?
Arafangion
Odpowiedzi:
72
Poniższy wpis w .ssh/configpliku rozwiązuje problem
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Gdzie ~/.ssh/whateverjest ścieżka do twojego klucza prywatnego
Dodatkowo można odebrać użytkownika i hosta
git push [email protected]:repo_name.git
^__ ^_______________
user host
więc gdybym chciał użyć innego klucza ssh dla innego hosta, czy powtórzyłbym to samo po pierwszym? Czy plik tożsamości dotyczy pierwszego hosta przed nim?
Wykonanie ssh w trybie szczegółowym, czyli inaczej ssh -v user@host, wypisuje ogromną ilość informacji debugowania, które zawierają również szczegóły dotyczące plików kluczy, które próbuje się zalogować.
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Możesz również grepować standardowe wyjście błędów polecenia ssh, aby znaleźć plik klucza w następujący sposób: ssh -vv user@host 2> >(grep Offering)- to ułatwi sprawę. Ostatni plik powinien być kluczem publicznym. Na przykład:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Gianfranco P.
4
githubto nie to samo co git.
ForeverWintr
9
O ile nie jest to określone w .ssh/configpliku, będzie używany domyślny plik klucza prywatnego.
Plik domyślny to ~/.ssh/id_rsalub ~/.ssh/id_dsalub w ~/.ssh/identityzależności od wersji protokołu.
Powiedziałbym, że najbardziej praktyczne według mojego gustu byłoby:
GIT_SSH_COMMAND='ssh -v' git …
oczywiście, w zależności od okoliczności, korzystne może być wyeksportowanie go do bieżącego środowiska SHELL, aby nie trzeba było za każdym razem dodawać go ręcznie. Wtedy byłoby tak:
export GIT_SSH_COMMAND='ssh -v'
git …
- Jak man gitsugeruje, istnieje kilka zmiennych środowiskowych, które miałyby wpływ na operacje Gita z użyciem SSH. Zgodnie z opcją man sshwdrażania można uzyskać informacje o debugowaniu -v(nie tylko, ale także zajrzyj do instrukcji, jeśli chcesz dowiedzieć się więcej).
TAK. To powinna być akceptowana odpowiedź. Aby to działało na okna CMD (ugh), zastosowanie: set GIT_SSH_COMMAND=ssh -v. Pomogło mi to zrozumieć, że ścieżka ssh-config Inlcude-Path powinna wyglądać mniej więcej tak w systemie Windows: Include /C/Users/YourUserName.ssh/configaby ssh, a tym samym git, używał pliku konfiguracyjnego, który następnie używa na przykład HOST *wpisu do określenia pliku tożsamości, którego używa git / ssh.
icyerasor
6
Ponieważ gitużywa tylko sshdo połączenia, użyje dowolnego klucza sshdo połączenia ze zdalnym hostem. Zobacz ~/.ssh/configplik po szczegóły; hostblok wykorzystuje IdentityFiledyrektywę określić klucz prywatny do użycia. Strona ssh_config(5)podręcznika zawiera pełne szczegóły.
Hmm ... plik nie istnieje w moim systemie. Czy powinno?
James Raitsev
1
@JAM Jakiego systemu operacyjnego używasz? Czasami plik konfiguracyjny znajduje się pod adresem/etc/ssh/ssh_config
Jestem na MACOS. Znaleziony /etc/ssh_configplik, który wydaje się być plikiem pełnym skomentowanych wpisów
James Raitsev
@sarnold Możesz stworzyć ~/.ssh/configsiebie.
xdazz
4
To może być super edge, ale po uruchomieniu ssh -vT [email protected]pokazało mi, że /root/.sshszuka kluczy, spodziewałem się, że sprawdzi mój katalog domowy, a potem zdałem sobie sprawę, że jestem zalogowany jako root!
Odpowiedzi:
Poniższy wpis w
.ssh/config
pliku rozwiązuje problemGdzie
~/.ssh/whatever
jest ścieżka do twojego klucza prywatnegoDodatkowo można odebrać użytkownika i hosta
źródło
Wykonanie ssh w trybie szczegółowym, czyli inaczej
ssh -v user@host
, wypisuje ogromną ilość informacji debugowania, które zawierają również szczegóły dotyczące plików kluczy, które próbuje się zalogować.Teraz, jeśli połączysz to, z krokiem 4 na własnej stronie pomocy SSH Git ,
ssh -vT [email protected]
możesz udzielić odpowiedzi.Uwaga: Możesz również użyć
-i
przełącznika, aby powiedzieć ssh podczas wykonywania polecenia, którego pliku klucza użyć.źródło
ssh -vv user@host 2> >(grep Offering)
- to ułatwi sprawę. Ostatni plik powinien być kluczem publicznym. Na przykład:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
to nie to samo cogit
.O ile nie jest to określone w
.ssh/config
pliku, będzie używany domyślny plik klucza prywatnego.Plik domyślny to
~/.ssh/id_rsa
lub~/.ssh/id_dsa
lub w~/.ssh/identity
zależności od wersji protokołu.źródło
Powiedziałbym, że najbardziej praktyczne według mojego gustu byłoby:
oczywiście, w zależności od okoliczności, korzystne może być wyeksportowanie go do bieżącego środowiska SHELL, aby nie trzeba było za każdym razem dodawać go ręcznie. Wtedy byłoby tak:
- Jak
man git
sugeruje, istnieje kilka zmiennych środowiskowych, które miałyby wpływ na operacje Gita z użyciem SSH. Zgodnie z opcjąman ssh
wdrażania można uzyskać informacje o debugowaniu-v
(nie tylko, ale także zajrzyj do instrukcji, jeśli chcesz dowiedzieć się więcej).Na wyjściu zobaczysz coś takiego jak…
… Co jest odpowiedzią na Twoje pytanie qn.
źródło
set GIT_SSH_COMMAND=ssh -v
. Pomogło mi to zrozumieć, że ścieżka ssh-config Inlcude-Path powinna wyglądać mniej więcej tak w systemie Windows:Include /C/Users/YourUserName.ssh/config
aby ssh, a tym samym git, używał pliku konfiguracyjnego, który następnie używa na przykładHOST *
wpisu do określenia pliku tożsamości, którego używa git / ssh.Ponieważ
git
używa tylkossh
do połączenia, użyje dowolnego kluczassh
do połączenia ze zdalnym hostem. Zobacz~/.ssh/config
plik po szczegóły;host
blok wykorzystujeIdentityFile
dyrektywę określić klucz prywatny do użycia. Stronassh_config(5)
podręcznika zawiera pełne szczegóły.źródło
/etc/ssh/ssh_config
/etc/ssh_config
plik, który wydaje się być plikiem pełnym skomentowanych wpisów~/.ssh/config
siebie.To może być super edge, ale po uruchomieniu
ssh -vT [email protected]
pokazało mi, że/root/.ssh
szuka kluczy, spodziewałem się, że sprawdzi mój katalog domowy, a potem zdałem sobie sprawę, że jestem zalogowany jako root!źródło
ssh
sposób przesłuchania, to prawidłowe rozwiązania. Dzięki.Na serwerze zdalnym edytuj plik sshd_config i zmień LogLevel z INFO na VERBOSE i zrestartuj ssh.
Teraz twój plik dziennika będzie zawierał odcisk palca klucza, który został użyty do uwierzytelnienia każdego użytkownika.
W systemie Ubuntu te pliki to:
ale mogą się różnić w innej dystrybucji. Po prostu wygoogluj swoją lokalizację (niektórzy używają na przykład / var / log / secure).
źródło