dropbear ssh-server vandt ' t lad mig oprette forbindelse

Jeg prøver at få ssh-adgang til min router. I øjeblikket har jeg kun telnetadgang, og jeg installerede dropbear og kører (ved hjælp af opkg på et usb-drev, der er tilsluttet routeren).

Fra starten begyndte jeg at generere en privat nøgle og dekryptere den (siden dropbear understøtter ikke dette endnu) og den offentlige:

cd .ssh openssl genrsa -des3 -out id_rsa openssl rsa -in id_rsa -out id_rsa ssh-keygen -y -f id_rsa > authorized_keys 

Jeg uploadede den offentlige nøgle (authorized_keys ) til /root/.ssh. Jeg placerer filen på en Apache-server (på min lokale computer) og downloader den på routeren ved hjælp af wget (så den downloadede fil bliver rod som ejer / gruppe) og ændrede derefter tilladelserne til 0600 (det samme for klienten men med min bruger

Når jeg prøver at få adgang, giver det mig en “Tilladelse nægtet (publickey)” -fejl:

$ ssh -v -i ~/.ssh/id_rsa [email protected] OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/chazy/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/chazy/.ssh/id_rsa-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.4 debug1: Remote protocol version 2.0, remote software version dropbear debug1: no match: dropbear debug1: Authenticating to 192.168.1.1:22 as "root" debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: [email protected] debug1: kex: host key algorithm: ssh-rsa debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha1 compression: none debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha1 compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ssh-rsa SHA256:1EFA75uwLp+4hBW0t3aaY05QjLzYd4jjDWoULAzF/8o debug1: Host "192.168.1.1" is known and matches the RSA host key. debug1: Found key in /home/chazy/.ssh/known_hosts:1 debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /home/chazy/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: No more authentication methods to try. Permission denied (publickey). 

Medmindre jeg ” m læser forkert, hvad dokumentationen ( GitHub repo ) siger:

Server offentlig nøgle godkendelse :

Du kan bruge ~ / .ssh / autoriserede nøgler på samme måde som med OpenSSH, bare sæt nøgleposterne i den fil. De skal have formen:

ssh- RSA AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV + ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk / yU99UVv6NWV / 5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET / MG8qyskG / 2IE2DPNIaJ3Wy + Ws4IZEgdJgPlTYUBWWtCWOGc = nogen @ værtsnavn

Du skal sørge for, at ~ / .ssh, og nøglefilen, kun skrivbar for brugeren. Pas på redaktionen der splittede nøglen i flere linjer.

Dropbear understøtter nogle muligheder for autoriserede_taster, se manpage.

Jeg gjorde alt, hvad der står, så jeg ved ikke, hvor problemet kan være.

Dokumentationen nævner en anden måde:

Clientens offentlige nøgle auth:

Dropbear kan udføre godkendelse af offentlig nøgle som klient, men du bliver nødt til at konvertere OpenSSH-stilnøgler til Dropbear-format eller bruge dropbearkey til at oprette dem.

Hvis du har en OpenSSH-stil privat nøgle ~ / .ssh / id_rsa, skal du gøre:

dropbearconvert openssh dropbear ~ / .ssh / id_rsa ~ / .ssh / id_rsa.db dbclient -i ~ / .ssh / id_rsa.db

Dropbear understøtter ikke krypterede hostkeys, men kan oprette forbindelse til ssh-agent.

Så dette menes, at hvis jeg konverterer den private nøgle til en dropbear privat nøgle, kan jeg bruge dropbear-klienten til at oprette forbindelse til dropbear-serveren:

dropbearconvert openssh dropbear id_rsa id_rsa.db 

Jeg vil prøve dette og se, om det fungerer. Men alligevel skal serverens offentlige nøgle-godkendelse fungere.

Kommentarer

  • Tillader dropbear ssh server / config root-login? Som standard på flere ssh-servere er root-login ikke tilladt af sikkerhedshensyn.
  • Jeg tror det, jeg kan ikke ‘ ikke se nogen konfigurationsfil i opt/etc/dropbear (kun værtsnøglerne), og parameteren for at afvise den er -w (bruger den ikke).
  • Redigeret spørgsmål: fulgte trinene for at konvertere ssh-nøglen til en dropbear nøgle og intet (som bemærket af Ipor Sircer fra første svar).
  • Fundet dokumentation i github repo (kan ‘ ikke rapportere der, problemer er ikke aktiveret) . Spørgsmål redigeret igen. Samme problem endnu 🙁

Svar

Kort svar: Du kører sandsynligvis OpenWrt, og du skal sætte din offentlige nøgle i /etc/dropbear/authorized_keys i stedet for /root/.ssh/authorized_keys.

Langt svar:

GitHub repo, du peger på, er den, der opretholdes af dropbear-forfatteren; den siger, at ~/.ssh/authorized_keys fungerer, og ifølge GitHub har det gjort det i mindst 14 år. Ser man på koden i svr-authpubkey.c det tilføjer /.ssh/authorized_keys til “pw_dir”.

Jeg dog , havde det samme problem som du har, og jeg opdagede, at den binære, der er leveret i OpenWrt 18.06.1, faktisk åbner /etc/dropbear/authorized_keys. Brug af denne fil virker for mig .

Denne adfærd er dokumenteret i OpenWrt-dokumenterne .

Så hvordan kommer det?

I betragtning af at koden ovenfor ikke kan producere filnavnet alene (.ssh mangler) og der er ingen .ssh symlink nogen steder, jeg kørte strings på den binære. Det viste, at /etc/dropbear/authorized_keys nævnes eksplicit, lige før %s/.ssh/authorized_keys, der kan forventes fra GitHub-koden. Jeg konkluderer, at OpenWrt binær ikke er kompileret fra de samme kilder … og faktisk lapper OpenWrt opstrøms-koden med denne patch . Det ændrer den anvendte fil til /etc/dropbear/authorized_keys hvis (og kun hvis) målbrugeren er root.

Da du nævner opkg, jeg forestiller mig, at du også bruger OpenWrt, og at dette er dit problem. Jeg har føjet et OpenWrt-tag til dit spørgsmål.

Svar

authorized_keys er en fil, ikke en mappe.

Et eksempel på autoriserede_keys-fil:

 # Comments allowed at start of line ssh-rsa AAAAB3Nza...LiPk== [email protected] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [email protected] 

http://man.he.net/man5/authorized_keys

Også .ssh/ og alle filer i den skal kun ejes og læses af brugeren, i dette tilfælde root.

Kommentarer

  • Det har jeg lige ordnet, men stadig ikke held 🙁 (se opdateret spørgsmål).

Svar

mand dropbearkeys:

NOTES The program dropbearconvert(1) can be used to convert between Dropbear and OpenSSH key formats. Dropbear does not support encrypted keys. EXAMPLE generate a host-key: # dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key extract a public key suitable for authorized_keys from private key: # dropbearkey -y -f id_rsa | grep "^ssh-rsa " >> authorized_keys 

Kommentarer

  • Det lykkedes mig at konvertere den private nøgle, men stadig ikke held 🙁 (se opdateret spørgsmål).

Svar

Du skal oprette ssh-nøgle ved hjælp af dropbearkey-værktøjet. RSA_KEYFILE = / etc / dropbear / dropbear_rsa_host_key DSS_KEYFILE = / etc / dropbear / dropbear_dss_host_key

dropbearkey -t dss -f $ DSS_KEYFILE

dropbearkey -t rsa -f $ RSA_KEYFILE

Genstart derefter dropbear-dæmonen. Prøv derefter at oprette forbindelse, den skal fungere.

Svar

Nogle markører, der kan hjælpe dig med at få forbindelse ved hjælp af PKI med Dropbear, dette testede en container baseret på Alpine Linux 3.12-pakker, der forbinder fra en OpenSSH-klient.

  1. Brugeren har brug for en skal.
  2. Brugeren har det ikke har brug for en loginadgangskode.
  3. Brugeren “s ~ må ikke være gruppe- / verdensskrivelig (dvs. chmod 755 i det mindste; du burde bruge 700 til hjemmekataloger).
  4. Brugeren “s ~/.ssh og ~/.ssh/authorized_keys skal kun være ejeradgang (f.eks. 700 i biblioteket og 600 på filen).
  5. Der skal være en skrivbar /tmp mappe
  6. authorized_keys poster er i samme format som brugt af OpenSSH.

Jeg laver containere ved hjælp af kirsebærplukkede filer fra alpine pakker; Jeg har et billede på ~ 2 MB, som jeg kan ssh ind i, så længe alle ovenstående krav er opfyldt.

Svar

I kom lige over dette spørgsmål, mens jeg ledte efter grunde til, at forbindelse via dropbear til min server stoppede pludselig med at arbejde (har arbejdet i flere måneder, men kun lejlighedsvis brugt hvert par uger).

løsningen / forklaringen i endelig blev fundet i meddelelsen debug1: send_pubkey_test: no mutual signature algorithm med øget bredhed på mine klienters ssh-forbindelsesforsøg, der førte mig til en fejlsøgningsartikel til bitbucket .

den artikel nævner RSA-algoritmen bliver hurtigt udfaset på tværs af operativsystemer og SSH-klienter på grund af forskellige sikkerhedssårbarheder […] som en årsag og lister som mulige løsninger enten:

  • tilføjelse PubkeyAcceptedKeyTypes +ssh-rsa til klienternes cfg-fil (brug kun denne som en midlertidig løsning som det er pote ntionalt usikker!)

  • brug ECDSA eller ED25519 algoritme / nøgler. nu med dropbear-versionen til stede på mit system kunne jeg kun bruge ECDSA, da ED25519 gav mig ukendt algoritme fejl på dropbears-siden.

Håber dette hjælper nogen med at snuble over dette spørgsmål, da jeg selv var hård, det er sandsynligvis ikke en løsning på det originale spørgsmål, pls. tilgiv.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *