Mam zdalny serwer. Mogę już pomyślnie ssh na tym zdalnym serwerze - mój klucz znajduje authorized_keys
się na zdalnym serwerze.
Teraz chcę pobrać z GitHub bezpośrednio na ten zdalny serwer. Ale dostaję, permission denied (publickey)
kiedy próbuję ssh -T [email protected]
na zdalnym serwerze.
Czy powinienem kopiować id_rsa.pub
bezpośrednio z mojego komputera lokalnego na zdalny serwer, czy jest to niebezpieczne?
Jeśli to jest odpowiedź, jaki jest najlepszy sposób, aby to zrobić?
Czy powinienem wygenerować nowy klucz publiczny na zdalnym serwerze i dodać go do mojego konta github?
AKTUALIZACJA:
Oto wynik pełnego ssh:
~$ ssh -Tv [email protected]
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication
Permission denied (publickey)
się na zdalną maszynę.Odpowiedzi:
id_rsa.pub
mogą być kopiowane w dowolnym miejscu, bez realnego zagrożenia dla niego. To jest twój klucz publiczny i jest przeznaczony do takich rzeczy. Jest to połowa klucza, a udostępnianie go w miejscach, do których chcesz uzyskać dostęp, jest sposobem, w jaki pozwalasz na działanie klucza prywatnego.Aby umożliwić zdalne logowanie, klucz publiczny musi znajdować się na liście
authorized_keys
(authorized_keys2
w niektórych systemach). Jeden klucz w każdym wierszu, w tym formacie:Aby to osiągnąć, po skopiowaniu wystarczy dołączyć go do
authorized_keys
pliku w następujący sposób:cat id_rsa.pub >> ~/.ssh/authorized_keys
Większość zdrowych systemów tchórzliwie odmawia zezwolenia na używanie logowania opartego na kluczach, jeśli
.ssh
folder ma zbyt luźne uprawnienia. Folder powinien być700
, więc jeśli nadal masz problemy:chmod 700 ~/.ssh
Ponadto pliki w
.ssh
folderze powinny mieć 600:chmod 600 ~/.ssh
Edycja 1:
Sam plik nie
id_rsa.pub
jest wymagany na zdalnym serwerze. Tylko zawartość, jako częśćauthorized_keys
. Polecam uruchomić,ssh -vT [email protected]
aby włączyć pełne rejestrowanie, abyś mógł dokładnie zobaczyć, na jakie uprawnienia narzeka.Edycja 2:
Oznacza to, że żaden z oferowanych kluczy nie pasuje do tego, co ma zdalny serwer w pliku. To, co chcesz zobaczyć, to coś takiego:
Rzeczy do sprawdzenia:
authorized_keys
authorized_keys
naauthorized_keys2
źródło
~/.ssh/authorized_keys
na zdalnym serwerze - dodałem go za pomocącat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"
. Następnie sshed na pilocie i pobiegł~$ chmod 700 ~/.ssh
i$ chmod 600 ~/.ssh/authorized_keys
ale wciążPermission denied (publickey)
przy próbie ssh do github. Czy powinienem również skopiować całyid_rsa.pub
plik na komputer zdalny?ssh
polecenia opisanego w pytaniu z-v
przełącznikiem, aby zobaczyć dokładnie, na jakie uprawnienia narzeka ssh.check that one of the private keys...
- co powinienem tutaj zrobić?Według twojego śladu debugowania, żaden z tych plików kluczy nie istnieje w systemie lokalnym, a ssh nie zaoferował żadnych kluczy do zdalnego serwera. Upewnij się, że klucz, którego chcesz użyć, faktycznie istnieje na hoście, na którym działa ssh, i że plik ma poprawną nazwę. Jeśli chcesz użyć pliku klucza innego niż jeden z plików domyślnych, musisz podać go w wierszu polecenia ssh:
źródło
authorized_keys
. Czy to wystarczy, czy też muszę tam skopiować plik klucza?authorized_keys
dotyczy kluczy publicznych , które będą akceptowane dla połączeń przychodzących . Potrzebujesz kopii pliku klucza prywatnego , aby nawiązać połączenie wychodzące z innym hostem. Więc tak, jeden z tych kluczowych plików (id_rsa itp.) Musi być obecny na hoście, na którym działa ssh.Serwer potrzebuje twojego klucza prywatnego do uwierzytelnienia w Github. Twój klucz publiczny, jak sugeruje jego nazwa, jest uważany za publiczny, więc nie może wystarczyć do uwierzytelnienia.
Jeśli nie musisz używać Github na zdalnym serwerze bez połączenia przez ssh, powinieneś użyć przekazywania ssh-agent. Przewodnik po tym jest dostępny na Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .
W przeciwnym razie należy wygenerować nowy klucz i połączyć go ze swoim kontem.
źródło
Możesz bezpośrednio wpisać polecenie.
jeśli masz już klucz ssh, pokaże go. W przeciwnym razie daje błąd. Musisz dodać nowy klucz.
źródło