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.
- 2050 megtekintés
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?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Köszönöm ezt az infót!
Nézem mitől is rövidebb az én kulcsom!
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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. ...
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Bárhova rakhatod, ha direkt megadott a kulcsot az openwrt-s ssh kliensnek (szerintem az is dropbear, de hülyeséget nem akarok írni). Nálam így működött:
[code]
ssh me@mypc -i ~/.ssh/id_rsa
[code]
Ahol A "-i"-vel adom meg a private key-t, amivel autentikálni akarok.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
az kommentek ideje alapján úgy látom, hogy ez már nem aktuális.
- A hozzászóláshoz be kell jelentkezni