uwierzytelnianie ssh za pomocą klucza prywatnego

uwierzytelnianie ssh za pomocą klucza prywatnego
LitwinWileński
  • Rejestracja:prawie 3 lata
  • Ostatnio:2 dni
  • Postów:734
0

Nie udaje mi się uwierzytelnić po ssh za pomocą klucza prywatnego.

Na 1 komputerze (serwer) wsl Ubuntu na windows 10 zrobiłem tak:

  1. Zainstalowałem open-ssh.
  2. Zmieniłem konfigurację w /etc/ssh/sshd_config odkomentowując:
Kopiuj
PubkeyAuthentication yes
AuthorizedKeysFile	~/.ssh/authorized_keys

całość pliku (z usuniętymi komentarzami):

Kopiuj
Include /etc/ssh/sshd_config.d/*.conf

PubkeyAuthentication yes
AuthorizedKeysFile	~/.ssh/authorized_keys
KbdInteractiveAuthentication no
UsePAM yes

X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem	sftp	/usr/lib/openssh/sftp-server

Na 2 komputerze (klient) windows 10 zrobiłem tak:

  1. Wygenerowałem klucz prywatny i publiczny ssh-keygen

Na 1 komputerze (serwer):

  1. Przekopiowałem klucz publiczny id_rsa.pub z klienta na serwer do ~/.ssh/authorized_keys
  2. Zrestartowałem ssh sudo service ssh restart

Na 2 komputerze (klient):

  1. ssh -i id_rsa <moj uzytkownik>@192.xxx.xx.xx mimo że podaję mu klucz prywatny to i tak żąda hasła (po haśle wchodzi). Jak dodatkowo w konfiguracji sshd dodałem PasswordAuthentication no to przy próbuje logowania z kluczem prywatnym dostaję PERMISSION DENIED.

logi serwera:
???
Nie widzę logów na serwerze, powinny być w /var/log/auth.log?

logi klienta:

Kopiuj
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Connecting to 192.xx.xxx.xx [192.xx.xxx.xx] port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\myuser\\.ssh\\id_rsa type 0
debug1: identity file C:\\Users\\myuser\\.ssh\\id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
debug1: match: OpenSSH_8.9p1 Ubuntu-3ubuntu0.10 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 192.xx.xxx.xx:22 as 'myuser'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:/cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
debug1: Host '192.xx.xxx.xx' is known and matches the ECDSA host key.
debug1: Found key in C:\\Users\\myuser/.ssh/known_hosts:8
debug1: rekey out after 13421778 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 13421778 blocks
debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
debug1: Will attempt key: C:\\Users\\myuser\\.ssh\\id_rsa RSA SHA256:xxx/xxxxx explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,webauthn-sk-ecdsa-sha2-nistp256@openssh.com>
debug1: kex_input_ext_info: publickey-hostbound@openssh.com (unrecognised)
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: C:\\Users\\pt\\.ssh\\id_rsa RSA SHA256:xxxxxxxxxxxxxxxxx explicit
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: No such file or directory

Nie widzi klucza publicznego? debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory ?

Jakieś pomysły?

edytowany 8x, ostatnio: LitwinWileński
4w0rX4t4X
  • Rejestracja:prawie 2 lata
  • Ostatnio:około 2 miesiące
  • Postów:351
1

Czasem serwer wymaga aby uprawnienia do katalogu .ssh i pliku authorized_keys były ustawione na:

Kopiuj
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Zobacz pozostałe 2 komentarze
LitwinWileński
ok, zmienię, ale to nie pomoże
4w0rX4t4X
Proszę daj znać jaki będzie efekt.
LitwinWileński
to samo, szukam jak włączyć te logi na serwerze
4w0rX4t4X
/var/log/auth.log masz puste? Ew. w pliku: /etc/ssh/sshd_config poszukaj LogLevel i daj VERBOSE albo DEBUG
LitwinWileński
puste, uruchomiłem w trybie debug, zaraz dorzucę poniżej
LitwinWileński
  • Rejestracja:prawie 3 lata
  • Ostatnio:2 dni
  • Postów:734
0
Kopiuj
 sudo /usr/sbin/sshd -d
debug1: sshd version OpenSSH_8.9, OpenSSL 3.0.2 15 Mar 2022
debug1: private host key #0: ssh-rsa SHA256:xxx
debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:/xxx
debug1: private host key #2: ssh-ed25519 SHA256:xxx
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 5 out 5 newsock 5 pipe -1 sock 8
debug1: sshd version OpenSSH_8.9, OpenSSL 3.0.2 15 Mar 2022
debug1: private host key #0: ssh-rsa SHA256:xxx
debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:/xxx
debug1: private host key #2: ssh-ed25519 SHA256:xxx
debug1: inetd sockets after dupping: 3, 3
sys_get_rdomain: cannot determine VRF for fd=3 : Protocol not available
Connection from 192.xxx.xx.xx port 62598 on 192.xxx.xx.xx port 22
debug1: Local version string SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.10
debug1: Remote protocol version 2.0, remote software version OpenSSH_for_Windows_8.6
debug1: compat_banner: match: OpenSSH_for_Windows_8.6 pat OpenSSH* compat 0x04000000
debug1: permanently_set_uid: 108/xxx [preauth]
debug1: ssh_sandbox_child: prctl(PR_SET_SECCOMP): Invalid argument [preauth]
debug1: list_hostkey_types: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
debug1: SSH2_MSG_KEXINIT received [preauth]
debug1: kex: algorithm: curve25519-sha256 [preauth]
debug1: kex: host key algorithm: ssh-ed25519 [preauth]
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none [preauth]
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none [preauth]
debug1: expecting SSH2_MSG_KEX_ECDH_INIT [preauth]
debug1: SSH2_MSG_KEX_ECDH_INIT received [preauth]
debug1: rekey out after 134217728 blocks [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: Sending SSH2_MSG_EXT_INFO [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: rekey in after 134217728 blocks [preauth]
debug1: KEX done [preauth]
debug1: userauth-request for user myuser service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
sys_get_rdomain: cannot determine VRF for fd=3 : Protocol not available
debug1: PAM: initializing for "myuser"
debug1: PAM: setting PAM_RHOST to "192.xxx.xx.xx"
debug1: PAM: setting PAM_TTY to "ssh"
debug1: userauth-request for user myuser service ssh-connection method publickey [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: userauth_pubkey: publickey test pkalg rsa-sha2-512 pkblob RSA SHA256:xxx [preauth]
debug1: temporarily_use_uid: 1000/1000 (e=0/0)
debug1: trying public key file /root/.ssh/authorized_keys
debug1: Could not open authorized keys '/root/.ssh/authorized_keys': Permission denied
debug1: restore_uid: 0/0
Failed publickey for myuser from 192.xxx.xx.xx port 62598 ssh2: RSA SHA256:k8QdMvd/vnd4GF4r2iLxERMr177aIKqDSdZBifp9YUM

Czemu roota chce czytać a nie myuser?
Could not open authorized keys '/root/.ssh/authorized_keys': Permission denied

4w0rX4t4X
Właśnie patrzę jak zachowuje się windowsowy klient ssh.
LitwinWileński
przeszliśmy dalej, kolejny błąd:
LitwinWileński
  • Rejestracja:prawie 3 lata
  • Ostatnio:2 dni
  • Postów:734
0

wrzuciłem id_rsa.pub do home/myuser i zamieniłem

AuthorizedKeysFile ~/.ssh/authorized_keys

na /home/myuser/id_rsa.pub

teraz błąd wygląda tak:

Permissions for ...id_rsa are too open

tak jak tu: https://superuser.com/questions/1296024/windows-ssh-permissions-for-private-key-are-too-open

edytowany 1x, ostatnio: LitwinWileński
4w0rX4t4X
Z putty mi działa ale musiałem wygenerować nowy format klucza. Z windowsowego ssh nie potrafię.
LitwinWileński
tak samo, też musiałem na nowo wygenerować
4w0rX4t4X
  • Rejestracja:prawie 2 lata
  • Ostatnio:około 2 miesiące
  • Postów:351
1
LitwinWileński napisał(a):

teraz błąd wygląda tak:

Permissions for ...id_rsa are too open

tak jak tu: https://superuser.com/questions/1296024/windows-ssh-permissions-for-private-key-are-too-open

Mam to samo:-)

Kopiuj
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "priv.key": bad permissions
LitwinWileński
  • Rejestracja:prawie 3 lata
  • Ostatnio:2 dni
  • Postów:734
1

zadziałało, musiałem na nowo wygenerować klucz

podsumowując problem leży w konfiguracji:

AuthorizedKeysFile ~/.ssh/authorized_keys
(nie wiem co tu ma być)

edytowany 1x, ostatnio: LitwinWileński
4w0rX4t4X
U mnie z putty zadziałało a przez win ssh nie potrafię... ale kij z tym bo i tak go nie używam :-) Dzięki za informacje.
PaulGilbert
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Postów:912
0

Ja jeśli dobrze pamiętam, to pod windowsem kiedyś jak korzystałem, musiałem zmienić uprawnienia pliku na tylko do odczytu (400), żeby działało.

WR
  • Rejestracja:5 miesięcy
  • Ostatnio:5 miesięcy
  • Postów:2
1

Kiedyś myślałem, że o SSH wiem wszystko, ale ostatnio dowiedziałem się, że za jego pomocą można nie tylko zorganizować bezpieczne połączenie ze zdalnym serwerem, ale także np. przekierować przez niego porty. Idę czytać książki o SSH :)

4w0rX4t4X
  • Rejestracja:prawie 2 lata
  • Ostatnio:około 2 miesiące
  • Postów:351
0
WestRiser napisał(a):

Kiedyś myślałem, że o SSH wiem wszystko, ale ostatnio dowiedziałem się, że za jego pomocą można nie tylko zorganizować bezpieczne połączenie ze zdalnym serwerem, ale także np. przekierować przez niego porty. Idę czytać książki o SSH :)

W wielu przypadkach możesz go użyć zamiast VPN. Mając dowolne konto shell możesz w domu postawić serwer nie mając globalnego IP. Tunele SSH to potęga.

superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Kraków
  • Postów:1999
0
WestRiser napisał(a):

Kiedyś myślałem, że o SSH wiem wszystko, ale ostatnio dowiedziałem się, że za jego pomocą można nie tylko zorganizować bezpieczne połączenie ze zdalnym serwerem, ale także np. przekierować przez niego porty. Idę czytać książki o SSH :)

Różne dziwne rzeczy można robić po SSH, przekierowywanie portów to małe piwo przy tym, że możesz zrobić X11 forwarding i uruchomić aplikację na zdalnym serwerze, ale mieć okno programu wyrenderowane po stronie klienta ;) jak pierwszy raz na to natrafiłem, to nawet nie byłem świadom, czego używam i jakim cudem otwieram emacsa na zdalnej maszynie, ale okno otwiera mi się na pulpicie.


Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)