[MEGOLDVA]OpenWrt csatlakozik ssh (dropbear) public kulccsal

Arra szép leírásokat találok, hogyan lehet az OpenWrt -hez csatlakozni public kulccsal de, hogy tud az OpenWrt dropbear csatlakozni arr nemigen?
Találtam egy blogot, de az nem működik.
A dropbear által létrehozott public kulcs rövid és azt sem látom hogy tudom megadni milyen felhasználó nevében szeretnék csatlakozni, jelszót nem is kér. A parancs valahogy így néz ki:
~/.ssh/dropbearkey -t rsa -f id_rsa > id_rsa.pub
A "sima" id_rsa egy bináris fájl, de a dropbear konvertál az OpenSSH számára egy ascii kulcsot - ezt mentem mint id_rsa.pub aminek a végén az áll, hogy root@OpenWrt, illetve gyárt egy "fingerprintet" is, ami md5?
A szerveren amihez csatlakozni akarok, (nyilván) tiltva van a root csatlakozás ssh -n.
Valakinek ezt sikerült megoldania?

UI: A terv az, hogy a telkemen lévő routerrel szeretném összehozni a "házi" routeremet - azaz szeretnék egy reverse csatornát kiépíteni, mivel az ottani internet kapcsolat egy számomra NEM elérhető routeren át zajlik.
A másik router szintén OpenWrt (talán kicsit régebbi verzió). Mivel nem érem el (egyenesben) gondoltam megpróbálom így.

Hozzászólások

Úgy érzem félreértesz pár dolgot, megpróbálom ezt tisztázni. (Ha nem érted félre akkor no offense, de nekem úgy tűnik).
Tehát a helyi gépen generált kulcspár (id_rsa és id_rsa.pub) az adott helyi user-hez tartozik, esetedben ez a root user az openwrt router-en. A "cél" user-t nem ezzel határozod meg, hanem az ssh paranccsal, pl ssh user@example.com, vagy ssh user3@example.net.
Ha a távoli gépen a pubkey benne van az adott user-nek a megfelelő helyen, akkor tudsz kulccsal csatlakozni (és ha az sshd konfig megengedi ezt, nyilván).
Ez a megfelelő hely linux-ok alatt a $HOME/.ssh/authorized_keys file, ha openwrt a célrendszer akkor /etc/dropbear/authorized_keys.

Az általad írt parancs kimenetéből csak az ssh-rsa kezdetű sorra lesz szükséged (annak a végén van a helyi user neve, a root@OpenWrt), az md5-ös nem kell, azt csapd ki az id_rsa.pub-ból, és az eredményt rakd a cél rendszeren az authorized_keys-be. (pl. /home/user3/.ssh/authorized_keys)

Szerintem így menni fog.

Szerk: ha már, akkor miért nem vpn?

Kicsit belezavarodtam a történetbe, ezért már nem tudtam mire gondoljak.
Emlékeim szerint, ha public kulcsot generálok az OpenSSH -val húrozott hostokon, akkor rászokott néhány dologra kérdezni, illetve egy user nevében készítem a kulcsot. Rákérdez a jelszóra amit rendre egy enterrel lerendezek és kész az adott host, user public kulcsa, amit ha átmásolok a remote host -on lévő home -ba működik a kapcsolat. Sőt, ha a hostot klónozom egy másik vasra onnan is :)
Pontosan azt tettem amit leírsz, az OpenWrt -n létrehozom:
/root/.ssh/id_rsa
/root/.ssh/id_rsa.pub # ami a dropbearkey kimenete a standard outputra
Az id_rsa.pub -ból "kioperálom" az első sort (a végén root@openwrt) és beillesztem a remote host "/home/usrx/.ssh/authorized_keys2" (Debian -ban valamiért ez működik - kipróbálva), és NEM működik :(
Amit még látok, hogy a többi (működő public kulcs) 392 bájt (szeretem az azonos, 4 karakteres host neveket :) addig a dropbear által készített kulcs csak 226 bájt, és nem működik :(
Úgyhogy nem tudom mire gondoljak - túrom a dropbear doksiját az OpenWrt site -on.

* Én egy indián vagyok. Minden indián hazudik.

Nálam 392 byte az is, amit a dropbear csinál.
Bár azt így gyártottam, de nem kellene problémának lennie:


dropbearkey -y -f ~/.ssh/id_rsa | grep ^ssh-rsa > ~/.ssh/id_rsa.pub

Ezt a pub file-t beraktam a gépemen az authorized_keys-be (ubuntu alatt ez megy), aztán simán belépett így:


root@rooter:~# ssh me@mypc -i ~.ssh/id_rsa

szerk: barrier braker van a router-en

Kipróbáltam az általad leírt csatlakozási parancsot:

root@rooter:~# ssh me@mypc -i ~.ssh/id_rsa
Failed loading keyfile '~./ssh/id_rsa.pub

root@router ssh me@mypc -i /root/.ssh/id_rsa
és ez MŰKÖDIK!!!
De most alaposan összezavarodtam, az OpenSSH host -ra az ascii id_rsa.pub -ot kellett beépíteni az authorized_key fileba, viszont ha használni akarom akkor a binárisra kell hivatkozni? Érdekes!
A lényeg megoldódott :D

* Én egy indián vagyok. Minden indián hazudik.

Igen, bocs, elcsesztem másodjára, ~/.ssh/id_rsa akart volna az is lenni.

A cél szerverre a pub-ot kell tenned, az a public key. A binárisra pedig azért kell hivatkoznod, mert az a private key (csak ezek szerint a dropbear érdekesen tárolja).

man ssh (linuxon, nem wrt-n)


     -i identity_file
             Selects a file from which the identity (private key) for public
             key authentication is read.  The default is ~/.ssh/identity for
             protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and
             ~/.ssh/id_rsa for protocol version 2. ...

Csak érdekesség képpen, "visszafelé" szó nélkül működik.
A belső hálózatomon lévő "házi szerverem" public kulcsát bemásoltam a Luci megfelelő ablakában és elmentettem. Gond nélkül csatlakoztam a routerre. A az "outhoprized_keys" nevű fájlt az /etc/dropbear könyvtárba tette. Lehet ez is a bajom, hogy nem a /root/.ssh -ba kellene pakolni?

* Én egy indián vagyok. Minden indián hazudik.

Azért működik "vissza"-irányba, mert a dropbear elfogad openssh publikus kulcsot.

De az openwrt-n fent lévő (dropbear) ssh kliens csak a saját privátkulcs-típusát tudja használni autentikációra.
Viszont az ssh-szerverre, ahova az OpenWRT-ről be akarsz lépni, (jó eséllyel :) ) openSSH típusú publikus kulcsot kell feltenni.

Az authorized_keys fájl tartalmaz (OpenSSH esetén is, OpenWRT-n dropbear szerver esetén is!) soronként egy publikus kulcsot openSSH formátumban.
Viszont a 'dropbearkey' által, OpenWRT-n létrehozott titkos kulcsból ki kell nyerni az OpenSSH formátumú publikus kulcs-sort, hogy ez a publikus kulcs beilleszthető legyen a szerver(ek) authorized_keys fájljába.
A módszert már xclusiv kolléga leírta RSA-kulcsra: dropbearkey -y -f ~/.ssh/id_rsa | grep ^ssh-rsa > ~/.ssh/id_rsa.pub
A módszer DSS/DSA-kulcsra hasonló: dropbearkey -y -f dsa_kulcs_helye | grep ^ssh-dss > ~/.ssh/id_dsa.pub
(A keletkezett fájl mindkét esetben egysoros kell, hogy legyen.)

Amelyik OpenSSH-szerver megfelelő authorized_keys fájljába ezt a publikus kulcsot bemásolod, oda az OpenWRT-ről a megfelelő privát kulcs megadásával be tudsz lépni.

Szóval a problémám ugyan az.
Nem működik: a dropbear -el működő Openwrt csatlakozzon a desktop gép OpenSSH -hoz.
- A public kulcs előállítása világos, értem, így csináltam.
- Kiemeltem a id_rsa -t amit a dropbear készített, és bemásoltam a ~/.ssh/authorized_keys2 -be.
Mégis kéri jelszót? (azzal be tudok lépni)
Az egyetlen "nyom" az, hogy a dropbear által generált kulcs az 226 byte, az OpenSSH által generált kulcsok pedig rendre 392 bájt hosszúak.
"xclusiv" barátunk azt mondja neki az dropbear -al készített kulcsok is 392 bájtosak.

Az OpenSSH -val működő desktop gépről, a jól ismert eljárás segítségével tudok csatlakozni a dropbear -hez, jelszó megadása nélkül.

* Én egy indián vagyok. Minden indián hazudik.