Sto cercando di ottenere laccesso ssh al mio router. Attualmente ho solo accesso telnet e ho installato dropbear ed è in esecuzione (utilizzando opkg su ununità USB collegata al router).
Fin dallinizio, quello che ho fatto è stato generare una chiave privata e decrittografarla (da allora dropbear non lo supporta ancora) e quella pubblica:
cd .ssh openssl genrsa -des3 -out id_rsa openssl rsa -in id_rsa -out id_rsa ssh-keygen -y -f id_rsa > authorized_keys
Ho caricato la chiave pubblica (authorized_keys
) a /root/.ssh
. Ho messo il file su un server Apache (nel mio computer locale) e lo scarico sul router usando wget (così il file scaricato diventa root come proprietario / gruppo) e poi ho cambiato i permessi in 0600 (lo stesso per il client ma con il mio utente ).
Quando provo ad accedere, viene visualizzato il messaggio di errore “Permission denied (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).
A meno che io ” sto leggendo male cosa dice la documentazione ( GitHub repo ):
Autenticazione della chiave pubblica del server :
Puoi usare ~ / .ssh / authorized_keys nello stesso modo di OpenSSH, basta inserire le voci chiave in quel file. Dovrebbero essere nel formato:
ssh- rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV + ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk / yU99UVv6NWV / 5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET / MG8qyskG / 2IE2DPNIaJ3Wy + Ws4IZEgdJgPlTYUBWWtCWOGc = qualcuno @ hostname
È necessario assicurarsi che ~ / .ssh, e il file di chiave, sono scrivibili solo dallutente. Attenzione ai redattori che ha diviso la chiave in più righe.
Dropbear supporta alcune opzioni per le voci authorized_keys, vedere la manpage.
Ho fatto tutto quello che dice, quindi ho non so dove potrebbe essere il problema.
La documentazione menziona un altro modo:
Autenticazione chiave pubblica client:
Dropbear può eseguire lautenticazione della chiave pubblica come client, ma dovrai convertire le chiavi in stile OpenSSH nel formato Dropbear o utilizzare dropbearkey per crearle.
Se hai una chiave privata in stile OpenSSH ~ / .ssh / id_rsa, devi fare:
dropbearconvert openssh dropbear ~ / .ssh / id_rsa ~ / .ssh / id_rsa.db dbclient -i ~ / .ssh / id_rsa.db
Dropbear non supporta le chiavi host crittografate sebbene possa connettersi a ssh-agent.
Quindi questo menu è che se converto la chiave privata in dropbear chiave privata, posso usare il client dropbear per connettermi al server dropbear:
dropbearconvert openssh dropbear id_rsa id_rsa.db
Vado a provare e vedere se funziona. Comunque, lautenticazione della chiave pubblica del server dovrebbe funzionare.
Commenti
Risposta
Risposta breve: probabilmente stai utilizzando OpenWrt e devi inserire la tua chiave pubblica in /etc/dropbear/authorized_keys
invece di /root/.ssh/authorized_keys
.
Risposta lunga:
GitHub Il repository a cui si punta è quello gestito dallautore dropbear; dice che ~/.ssh/authorized_keys
funziona e secondo GitHub lo ha fatto almeno per 14 anni. Guardando il codice in svr-authpubkey.c aggiunge /.ssh/authorized_keys
a “pw_dir”.
Io, tuttavia , ha avuto lo stesso problema che hai tu e ho scoperto che il file binario fornito in OpenWrt 18.06.1 effettivamente apre /etc/dropbear/authorized_keys
. Usare quel file funziona per me .
Questo comportamento è documentato in la documentazione di OpenWrt .
Allora come mai?
Dato che il codice precedente non può produrre quel nome file da solo (manca il .ssh
) e non è presente alcun .ssh
collegamento simbolico da nessuna parte, ho eseguito strings
sul file binario. Ciò ha mostrato che /etc/dropbear/authorized_keys
è menzionato esplicitamente, subito prima del %s/.ssh/authorized_keys
che ci si può aspettare dal codice GitHub. Concludo che il binario OpenWrt non è compilato dalle stesse fonti … e in effetti, OpenWrt patcha il codice a monte con questa patch . Modifica il file utilizzato in /etc/dropbear/authorized_keys
se (e solo se) lutente di destinazione è root.
Dato che hai menzionato opkg
, immagino che tu stia usando anche OpenWrt e che questo sia il tuo problema. Ho aggiunto un tag OpenWrt alla tua domanda.
Risposta
authorized_keys
è un file, non una directory.
Un esempio di file authorized_keys:
# 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
Anche .ssh/
e tutti i file in esso contenuti devono essere di proprietà e leggibili solo dallutente, in questo caso root
.
Commenti
- Lho appena risolto ma ancora senza fortuna 🙁 (vedi domanda aggiornata).
Risposta
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
Commenti
- Sono riuscito a convertire la chiave privata, ma ancora senza fortuna 🙁 (vedi domanda aggiornata).
Risposta
Devi creare una chiave ssh utilizzando lo strumento dropbearkey. 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
Quindi riavvia il demone dropbear. Quindi prova a connetterti, dovrebbe funzionare.
Risposta
Alcuni suggerimenti che possono aiutarti a connetterti usando PKI con Dropbear, questo ha testato un contenitore basato su pacchetti Alpine Linux 3.12, che si connette da un client OpenSSH.
- Lutente ha bisogno di una shell.
- Lutente no è necessaria una password di accesso.
- Lutente “s
~
non deve essere scrivibile dal gruppo / mondo (eschmod 755
almeno; dovresti utilizzare700
per le directory home). - Lutente “s
~/.ssh
e~/.ssh/authorized_keys
deve essere accessibile solo dal proprietario (ad es.700
nella directory e600
nel file). - Lì deve essere una
/tmp
directory - scrivibile Le voci
authorized_keys
hanno lo stesso formato utilizzato da OpenSSH.
Sto creando contenitori usando file selezionati da pacchetti alpine; Ho unimmagine di ~ 2 MB in cui posso eseguire lSSH purché tutti i requisiti di cui sopra siano soddisfatti.
Risposta
I mi sono appena imbattuto in questa domanda mentre cercavo i motivi per cui la connessione tramite dropbear al mio server ha smesso di funzionare allimprovviso (funziona da mesi ma viene utilizzata solo occasionalmente ogni due settimane).
la soluzione / spiegazione i finalmente trovato era nel messaggio debug1: send_pubkey_test: no mutual signature algorithm
con maggiore dettaglio sul tentativo di connessione ssh dei miei clienti che mi ha portato a un articolo sulla risoluzione dei problemi di bitbucket .
quellarticolo menziona Lalgoritmo RSA viene rapidamente deprecato tra i sistemi operativi e i client SSH a causa di varie vulnerabilità di sicurezza […] come causa ed elenca come possibili soluzioni alternative o:
-
aggiungendo
PubkeyAcceptedKeyTypes +ssh-rsa
al file cfg del client (usalo solo come soluzione temporanea poiché è possibile ntionally insecure!) -
usa algoritmo / chiavi ECDSA o ED25519. ora con la versione dropbear presente sul mio sistema potevo solo usare ECDSA poiché ED25519 mi dava errori algoritmo sconosciuto sul lato dropbears.
Spero che questo aiuti qualcuno a inciampare su questa domanda come ho fatto anche io, probabilmente non è una soluzione alla domanda originale, per favore. perdona.
opt/etc/dropbear
(solo le chiavi host) e il parametro per non consentirlo è -w (non lo si utilizza).