Powiedzmy, że Twój .sshkatalog zawiera 30 kluczy (15 prywatnych i 15 publicznych).
Gdzie w Gicie można sprawdzić, które z nich jest używane do łączenia się z danym zdalnym repozytorium?
Powiedzmy, że Twój .sshkatalog zawiera 30 kluczy (15 prywatnych i 15 publicznych).
Gdzie w Gicie można sprawdzić, które z nich jest używane do łączenia się z danym zdalnym repozytorium?
Odpowiedzi:
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 git@git.assembla.com:repo_name.git
^__ ^_______________
user host
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).
Teraz, jeśli połączysz to, z krokiem 4 na własnej stronie pomocy SSH Git , ssh -vT git@github.commożesz udzielić odpowiedzi.
Uwaga: Możesz również użyć -iprzełącznika, aby powiedzieć ssh podczas wykonywania polecenia, którego pliku klucza użyć.
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
githubto nie to samo co git.
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).
który klucz jest używany?
Na wyjściu zobaczysz coś takiego jak…
debug1: Offering public key: …
… Co jest odpowiedzią na Twoje pytanie qn.
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.
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.
/etc/ssh/ssh_config
/etc/ssh_configplik, który wydaje się być plikiem pełnym skomentowanych wpisów
~/.ssh/configsiebie.
To może być super edge, ale po uruchomieniu ssh -vT git@github.compokazał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!
sshsposó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:
/etc/ssh/sshd_config
/var/log/auth.log
ale mogą się różnić w innej dystrybucji. Po prostu wygoogluj swoją lokalizację (niektórzy używają na przykład / var / log / secure).