Sziasztok,
Microsoft az év elején elérhetővé tette az SFTP interface-eket blob containerek részére.
Valamilyen SSH problémából kifolyólag AIX-ből (7.3, OpenSSH 8.x, sftp cli a kliens) nem vagyunk képesek csatlakozni semmilyen kulccsal, jelszóval viszont felépül a kapcsolat.
Más SFTP szolgáltatásokhoz képesek vagyunk kapcsolódni az érintett AIX hostról és a kérdéses SFTP szolgáltatáshoz is tudunk máshonnan kapcsolódni.
Itt dobja el az SFTP szerver a kapcsolatot (kliens-oldali log-ok):
debug1: Sent ALLOW_PKCS12_KEYSTORE_CLIENT_FLAG packet
debug3: sign_and_send_pubkey: RSA SHA256:kulcs
debug3: sign_and_send_pubkey: signing using ssh-rsa
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 1
RSA itt jelentheti a kulcs tipusát és a signing algoritmust is, ha jól értettem meg.
Utóbbi esetben az "SHA-RSA" az sha1-et jelenti, ami az OpenSSH 7.x-ben kivezetésre került (természetesen az RSA kulcs továbbra is támogatott).
Ennek ellenére ugyanúgy a "signing using ssh-rsa" marad a log bejegyzésben, ha explicit megadjuk hogy mit használhat:
HostKeyAlgorithms rsa-sha2-512,rsa-sha2-256
Ahol felépül a kapcsolat az érintett AIX hostról ott egyértelműen látszik hogy nem SHA1-t használ:
debug3: sign_and_send_pubkey: RSA SHA256:kulcs
debug3: sign_and_send_pubkey: signing using rsa-sha2-512
Nem vagyok meggyőződve róla, hogy a Microsoft nem ludas abban, hogy nem tudnak megállapodni az SHA algoritmusról.
Viszont, az sem teljen világos, hogy az AIX miért ragaszkodik az RSA-SHA-hoz, ha van más támogatott is és explicit megadjuk, hogy mást használjon.
Van bármi tippetek?
Köszönöm!
Hozzászólások
Szerintem nektek a PubkeyAcceptedAlgorithms paramétert kellene tekergetni. Ez mit mond kliens oldalon?
ssh -Q PubkeyAcceptedAlgorithms
Azt hogy a PubkeyAcceptedAlgorithms AIX-en nem támogatott. :)
Innen szép nyerni. :) Van esetleg supportotok rá? Az a gyanúm, hogy az IBM patcheli az SSH-t, mert a hivatalos OpenSSH source code alapján kellene lennie.
Az, hogy miért nem rsa-sha2-512-vel kapcsolódik, annak prózai oka lehet: Microsoft oldalon nem támogatott.
Visszatérve az eredeti problémára: rsa-sha támogatottnak kellene lennie mindkét oldalon, mert egyébként ezt kapnád:
sign_and_send_pubkey: no mutual signature supported
Olyat esetleg tudtok próbálni, hogy Linux alól PubkeyAcceptedKeyTypes=ssh-rsa kapcsolóval is működik-e a csatlakozás?
Van, de az az igazság hogy összeteszem a két kezem hogy az ügyfél oldal - olaszok - engineer-eit is érdekli ez az issue és együtt tudunk dolgozni,
mert nekem lenne fontos hogy docker-es SFTP-ről migrálni tudjunk managed-re. AIX persze az ügyfélnél van. :)
Van AIX támogatás is, Microsoft support-hoz pedig én is hozzáférek, bár sokat nem várok tőlük.
Támogatott:Supported algorithms
De kiegyeznhetnének akár az rsa-sha2-256-ban is, ahogyan Ubuntu alól.
Egyébként ezt vissza is küldik, ha rossz KEX-et adok neki:
Ubuntu 22.04-el igen, AIX alól ugyanezzel a hibával száll el (azonos kulcspárral).
Egyre inkább az az érzésem, hogy ssha-rsa (sha1) esetén a Microsoft egyszerűen kidobja a klienst értelmes response nélkül, hogy ezt használja a kliens az pedig valami AIX bug.
A public key oszlopot nézd, ne a hostkey-t!
Ahogy fentebb írtam, ez azért az van, mert a MS oldal csak ezeket támogatja:
ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384
Gondolom AIX oldalon pedig csak az ssh-rsa a támogatott a fentiek közül.
Sikerült egy régebbi OpenSSH elé kerülnöm, ott ez a parancs listázza a támogatott key signing algoritmusokat:
ssh -Q key-sig
Nem tudom értelmezni ezt a táblázatot.
Az "SSH-RSA" most a public key tipusára (RSA) vonatkozik, vagy az aláíró algoritmusra (SHA-1)?
RSA kulcstipust biztosan támogatniuk kell.
Az pedig nagyon furcsa lenne, ha csak azt az ssh-rsa (SHA-1) aláíró algoritmust támogatnák egy újonnan bevezett szolgáltatásban, amit már évek óta kivezett az OpenSSH.
Ki tudnád ezt adni AIX oldalon?
ssh -Q key-sig
Szerintem ez valami újabb OpenSSH-ban jött be, AIX-en (OpenSSH_8.1p1) ezt dobja:
Ugyanez 22.04-ben:
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
"Az pedig nagyon furcsa lenne, ha csak azt az ssh-rsa (SHA-1) aláíró algoritmust támogatnák egy újonnan bevezett szolgáltatásban, amit már évek óta kivezett az OpenSSH."
Hát pedig de. Ubuntu 22.04 alól tesztelve Azure SFTP felé RSA kulccsal:
sftp ....
sign_and_send_pubkey: no mutual signature supported
sftp -oPubkeyAcceptedKeyTypes=ssh-rsa ...
Connected to ......blob.core.windows.net.
sftp>
Ezzel semmi gond nincs, a kulcs tipusa lehet (ssh-)rsa, az algoritmus nem lehet ssh-rsa (sha1).
"
"
Semmi köze ennek a paraméternek a kulcs típusához.
Bővebben:
https://bugzilla.mindrot.org/show_bug.cgi?id=3253
Szerintem nem így van, tehát ebben a kontextusban a kulcs tipusát jelenti, nem az algoritmust.
De akkor induljunk ki abból, hogy az ssh-rsa mégis az algoritmus.
Pontosan melyiket, tehát az ssh-rsa most akkor SHA1-et vagy SHA2-t jelent?
Mert az openSSH továbbra is támogatja a SHA2-t, a SHA1 lett kivezetve.
SHA2-t biztosan támogatnia kell az Azure-nek, hiszen Ubunturól tudunk csatlkozni, a log-ok alapján pedig egyértelmű hogy SHA2-t használ:
"De akkor induljunk ki abból, hogy az ssh-rsa mégis az algoritmus."
https://www.openssh.com/txt/release-8.7
"SHA2-t biztosan támogatnia kell az Azure-nek, hiszen Ubunturól tudunk csatlkozni, a log-ok alapján pedig egyértelmű hogy SHA2-t használ:"
Na ezt nem értem, ugyanis nekem NEM sikerül csatlakozni Azure-hoz, Ubuntu 22.04-ről, ahogy fent látod, csak ha külön engedélyezem az ssh-rsa-t.
debug1: Offering public key: /home/..../id_rsa RSA SHA256:kulcs agent
debug1: send_pubkey_test: no mutual signature algorithm
Hogy tovább bonyolitsuk, egy Windows-os gépen lévő OpenSSH-val beengedte az Azure ssh-rsa-val:
debug3: sign_and_send_pubkey: RSA SHA256:kulcs
debug3: sign_and_send_pubkey: signing using ssh-rsa
Itt: https://www.ibm.com/support/pages/ibm-aix-various-ssh-problems-after-upgrading-openssh-7x nincs esetleg használható infó?
Mondtam volna, hogy
ssh-keygen -t ed25519
, de azt nem sorolták fel, szóval B-tervként:ssh-keygen -t ecdsa -b 256
és aid_ecdsa.pub
fájlt kellene átadni azúréknak.Szerk: megnéztem egy korszerű AIX7.2-t, a gyári OpenSSH verzió 8.1 (2019-ből), tud ilyet.
Figyeljetek arra a körülményre, hogy létrehoztam egy új kulcsot a legfrissebb Ubuntu alatt, ezzel onnan be tudtam authentikálni, viszont AIX-en ezzel is pontosan az történik mint a régi kulccsal (amit nem tudok mozgatni biztonsági okokból Ubuntura) - ezek alapján azt gondolom hogy az aláíró algoritmus nem felel meg az Azure-nak, nem maga a kulcspár.
Ugye 2048 bites az RSA kulcs?
" RSA keys must be minimum 2048 bits in length."
Természetesen, lásd fentebb.
Kezdetnek jó lenne az
ssh -V
outputja.Aztán meg jöhetne a
/etc/ssh/ssh_config
-ban (vagy~/.ssh/config
-ban) a KexAlgorithms beállítása. Hogy pl.:KEX algorithms:
curve25519-sha256,
curve25519-sha256@libssh.org,
ecdh-sha2-nistp256,ecdh-sha2-nistp384,
ecdh-sha2-nistp521,
diffie-hellman-group-exchange-sha256,
diffie-hellman-group16-sha512,
diffie-hellman-group18-sha512,
diffie-hellman-group14-sha256,
diffie-hellman-group14-sha1
Kiemelten az Azurral közösen támogatott algoritmusokat.
Teljesen off, de most látom, hogy a
MANPATH
beállítása nem elég (pl.export MANPATH=/usr/local/share/man:/usr/local/man:/usr/local/ssl/man
), a -m opciót is használni kell (plman -m ssh
), különben a gyári (tehát elavult) manuált látjuk a saját telepítés helyett.További off: az OpenSSH source szerint ezek mind szinonímák az
ssh -Q
-nál:Még további off: a "packet type 1" az DISCONNECT, tehát nem feltétlenül authentikációs probléma (az a "packet type 51"); lehet, hogy a tűz- vagy vízfal vágta el a drótot?
"Még további off: a "packet type 1" az DISCONNECT, tehát nem feltétlenül authentikációs probléma (az a "packet type 51"); lehet, hogy a tűz- vagy vízfal vágta el a drótot?"
Én inkább arra gondolok, hogy valami kompatiblitási probléma miatt vágja le az Azure oldal a kapcsolatot. Lehet hogy az ottani logban szerepel is egy kis exception/crash ezzel kapcsolatban.
Igen, ez elképzelhető és először arra gondoltam, hogy nem is feltétlenül az authentikációban van a root cause.
Ezt csak nagyon kicsit árnyalja, hogy a passwrod basis authentikáció megy: be tud authentikálni és a megfelelő container-t látja, tehát az authorizáció is megy.
A mi oldalunkon ezt lényegesebben ki lehet zárni, ki van engedve és működik a kapcsolat az érintett Azure VNET-ben levő más SFTP-re, illetve a kapcsolat itt is felépül, válasz nem érkezik.
Az sftp érdekes állatka... Nekem például beletelt majd' egy órányi szí... izé, munkába, mire kiderült, hogy az agent-forward például nem megy vele...
Amikor Azure-t érintő hibát kell AIX-on orvosolni, az olyan mintha szívrohamot kapnál miközben átadják a tüdőrák diagnozisát. :)
Azért azóta kipróbálhattál volna egy ecdsa-s kulcsot, csak a teljesség kedvéért.
Valószínűleg működne, a gond hogy Terraform-al nem, legalábbis nem megfelelően és elég nagy effort lenne ez az egy host miatt újraírni.
Találtam még egy ilyet:
https://www.ibm.com/support/pages/ibm-aix-sshsftpscp-connections-termin…
Szerintem ez lesz az.
C: "Haver, esetleg te is AIX vagy? Érdekel egy minden szabványon kívüli egyéni lelemény?"
S: "Akkor mára ennyit. Viszlát!"
Elküldtem az olaszoknak, valószinűleg tartozom neked egy sörrel. :)
Na mire jutottatok?
Ez volt a megoldás, köszönöm!
Ugyan a know-issues-ba nem rakták be, de már decemberben benne volt a támogatott kliensek között ez a figyelmeztetés.
Átsiklottunk felette.
Off: forrásból akár 9.3-as OpenSSH-t is lehet fordítani, abban nincs benne az IBM egyéni leleménye.