dropbear ssh-server vann ' låt mig inte ansluta

Jag försöker få ssh-åtkomst till min router. För närvarande har jag bara telnetåtkomst och jag installerade dropbear och kör (använder opkg på en USB-enhet ansluten till routern).

Från början var det jag gjorde att skapa en privat nyckel och dekryptera den (sedan dropbear stöder inte detta ännu) och det offentliga:

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

Jag laddade upp den offentliga nyckeln (authorized_keys ) till /root/.ssh. Jag lägger filen på en Apache-server (på min lokala dator) och laddar ner den på routern med wget (så den nedladdade filen blir rot som ägare / grupp) och ändrade sedan behörigheterna till 0600 (samma för klienten men med min användare

När jag försöker komma åt ger det mig ett fel ”Tillstånd nekad (publickey)”:

$ 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). 

Om jag inte ” jag läser fel vad dokumentationen ( GitHub repo ) säger:

Serverens offentliga nyckel-autentisering :

Du kan använda ~ / .ssh / autoriserade_knappar på samma sätt som med OpenSSH, lägg bara nyckelposterna i den filen. De ska ha formen:

ssh- rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV + ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk / yU99UVv6NWV / 5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET / MG8qyskG / 2IE2DPNIaJ3Wy + Ws4IZEgdJgPlTYUBWWtCWOGc = någon @ värdnamn

Du måste se till att ~ / .ssh och nyckelfilen är endast skrivbar av användaren. se upp för redaktörer som delade nyckeln i flera rader.

Dropbear stöder några alternativ för godkända_tangentposter, se manpage.

Jag gjorde allt det står, så jag vet inte var problemet kan vara.

Dokumentationen nämner ett annat sätt:

Public client key auth:

Dropbear kan göra public key auth som klient, men du måste konvertera OpenSSH-stilnycklar till Dropbear-format, eller använda dropbearkey för att skapa dem.

Om du har en OpenSSH-stil privatnyckel ~ / .ssh / id_rsa, du måste göra:

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

Dropbear stöder inte krypterade värdnycklar men kan ansluta till ssh-agent.

Så detta menar att om jag konverterar den privata nyckeln till en dropbear privat nyckel, jag kan använda dropbear-klienten för att ansluta till dropbear-servern:

dropbearconvert openssh dropbear id_rsa id_rsa.db 

Jag ska prova och se om det fungerar. Men hur som helst, serverns offentliga nyckel-autentisering ska fungera.

Kommentarer

  • Tillåter dropbear ssh-server / config root-inloggning? Som standard på flera ssh-servrar tillåts inte root-inloggning för säkerhet.
  • Jag tror det, jag ’ ser inte någon konfigurationsfil i opt/etc/dropbear (endast värdnycklarna) och parametern för att inte tillåta den är -w (använder den inte).
  • Redigerad fråga: följ stegen för att konvertera ssh-nyckeln till en dropbear nyckel och ingenting (som noterats av Ipor Sircer från första svaret).
  • Hittade dokumentation i github repo (kan ’ inte rapportera där, problem är inte aktiverade) . Frågan redigerad igen. Samma problem ännu 🙁

Svar

Kort svar: Du kör antagligen OpenWrt och du måste sätta din offentliga nyckel i /etc/dropbear/authorized_keys istället för /root/.ssh/authorized_keys.

Långt svar:

GitHub repo du pekar på är den som upprätthålls av dropbear-författaren; det står att ~/.ssh/authorized_keys fungerar, och enligt GitHub har det gjort det åtminstone i 14 år. Tittar på koden i svr-authpubkey.c det lägger till /.ssh/authorized_keys till ”pw_dir”.

Jag dock , hade samma problem som du har, och jag upptäckte att den binära som tillhandahålls i OpenWrt 18.06.1 faktiskt öppnar /etc/dropbear/authorized_keys. Att använda den filen fungerar för mig .

Detta beteende är dokumenterat i OpenWrt-dokumenten .

Så varför?

Med tanke på att koden ovan inte kan producera det filnamnet på egen hand (.ssh saknas) och det finns ingen .ssh symlink någonstans, jag sprang strings på binären. Det visade att /etc/dropbear/authorized_keys nämns uttryckligen, precis före %s/.ssh/authorized_keys som kan förväntas från GitHub-koden. Jag drar slutsatsen att OpenWrt-binären inte är sammanställd från samma källor … och faktiskt lappar OpenWrt uppströmskoden med denna korrigeringsfil . Den ändrar filen som används till /etc/dropbear/authorized_keys om (och endast om) målanvändaren är root.

Eftersom du nämner opkg, jag antar att du också använder OpenWrt, och att detta är ditt problem. Jag har lagt till en OpenWrt-tagg i din fråga.

Svar

authorized_keys är en fil, inte en katalog.

Ett exempel på auktoriserade_key-filer:

 # 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

Även .ssh/ och alla filer i den måste endast ägas och läsas av användaren, i detta fall root.

Kommentarer

  • Jag fixade just det men fortfarande ingen tur 🙁 (se uppdaterad fråga).

Svar

man 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

  • Jag lyckades konvertera den privata nyckeln, men fortfarande ingen tur 🙁 (se uppdaterad fråga).

Svar

Du måste skapa ssh-nyckel med hjälp av dropbearkey-verktyget. 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

Starta sedan om dropbear-demonen. Försök sedan ansluta, den ska fungera.

Svar

Några pekare som kan hjälpa dig att ansluta med PKI med Dropbear. Detta testade en behållare baserad på Alpine Linux 3.12-paket, anslutning från en OpenSSH-klient.

  1. Användaren behöver ett skal.
  2. Användaren behöver inte behöver ett lösenord för inloggning.
  3. Användaren ”s ~ får inte vara grupp- / världsskrivbar (dvs. chmod 755 åtminstone; du borde använda 700 för hemkataloger).
  4. Användaren ”s ~/.ssh och ~/.ssh/authorized_keys måste endast vara ägaråtkomligt (t.ex. 700 i katalogen och 600 på filen).
  5. Där måste vara en skrivbar /tmp -katalog
  6. authorized_keys -posterna har samma format som används av OpenSSH.

Jag tillverkar behållare med körsbärsplockade filer från alpina paket; Jag har en ~ 2 MB bild som jag kan ssh in så länge alla ovanstående krav är uppfyllda.

Svar

I kom precis över den här frågan när jag letade efter skäl till varför anslutning via dropbear till min server slutade fungera plötsligt (har arbetat i flera månader men bara ibland använts varannan vecka).

lösningen / förklaringen i äntligen hittades var i meddelandet debug1: send_pubkey_test: no mutual signature algorithm med ökad närhet på mina klienters ssh-anslutningsförsök som ledde mig till en bitbucket-felsökningsartikel .

den artikeln nämner RSA-algoritmen avskaffas snabbt över operativsystem och SSH-klienter på grund av olika säkerhetsproblem […] som en orsak och listar som möjliga lösningar antingen:

  • lägger till PubkeyAcceptedKeyTypes +ssh-rsa till klienternas CFG-fil (använd endast detta som en tillfällig lösning som det är pote ntionellt osäker!)

  • använd ECDSA eller ED25519 algoritm / tangenter. nu med dropbear-versionen på mitt system kunde jag bara använda ECDSA eftersom ED25519 gav mig okänd algoritm fel på dropbears-sidan.

Hoppas att det här hjälper någon att snubbla över den här frågan eftersom jag gjorde det svårt, det är nog inte en lösning på den ursprungliga frågan, pls. förlåt.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *