OpenSSH

Vēsture

OpenSSH projektu uzsāka OpenBSD izstrādātāju komanda kā brīvu alternatīvu oriģinālajai Tatu Ylönen SSH programmatūras versijai, kuras licence joprojām ir komerciāla. OpenSSH izstrādātāji uzskata, ka tā ir daudz drošāka par oriģinālu, pateicoties viņu ieradumam radīt tīru un auditētu pirmkodu un faktam, ka, tā, kā projekta vārds norāda, ir BSD licencēta. Un, lai gan pirmkods no oriģinālā SSH projekta tagad ir pieejams, tā licence nosaka zināmus ierobežojumus to izplatot un lietojot, kas OpenSSH daudzu brīvprogrammu izstrādātāju vidū padara par favorītu.
OpenSSH pirmo reizi parādījās OpenBSD 2.6 versijā. OpenSSH 4.3 versija iznāca 2006. gada februārī.

Reģistrēta preču zīme

2001. gada februārī, SSH Communications Security priekšsēdētājs un galvenais izstrādātājs, Tatu Ylönen OpenSSH izstrādātāju e-pasta sarakstes forumā openssh-unix-dev@mindrot.org paziņoja, ka pēc sarunas ar galvenajiem OpenSSH izstrādātājiem, Markusu Friedelu, Teo de Rotu, un Nilu Provosu, kompānijai būs jāizmanto savas tiesības uz SSH un Secure Shell preču zīmju neaizskaramību. Turklāt, Tatū arī lūdza mainīt atsauces uz izmantojamo protokolu no SSH uz SecSh vai secsh, lai aizsargātu produkta preču zīmi un atpazīstamību. OpenSSH projektam, Tatū vārdiem, draudēja tiesāšanās, taču Teo de Rots atklāti paziņoja, ka projekta vārdu mainīt negrasās.
Tolaik termini "SSH", "Secure Shell" un "ssh" tika lietoti protokola darbagrupas dokumentos, kas piedāvāja protokolu padarīt par atvērtu un vienotu standartu, tāpēc tika uzskatīts, ka tādejādi Tatū jau ir atteicies no SSH kā reģistrētas preču zīmes, lai tā nodēvētu pašu protokolu. Tā notika tāpēc, ka ASV savienoto valstu reģistrētu preču zīmju aizsardzības likums nosaka, ka preču zīmes, kas izmantojamas reklāmā, var tikt lietotas vienīgi kā īpašvārdi, ne kā sugas vārdi. Nepareiza preču zīmes pielietošana, vai atļauja citiem to lietot nepareizi, padara to par vispārēju un juridiski neizsargātu terminu, kā tas, piemēram, notika ar Kleenex vai Aspirīnu.
Tāpat, palika neatbildēts jautājums, vai vārds "ssh" vispār varēja tikt uzskatīts par preču zīmi, vai arī tas vienkārši tika lietots kā SSH Communications Security logo, kas turklāt, vārdu attēlojot, lietoja mazos burtus.
Daudzi Interneta apskatnieki, to tā arī traktē, un pēc USPTO reģistrēto preču zīmju datu bāzē veiktā pētījuma, var secināt, ka arī fakts, ka kompānijas preču zīmes juridiskā aizstāvība vēršoties pret tādu brīvu produkta alternatīvu kā OpenSSH, kas sākta tikai sešus gadus pēc kompānijas dibināšanas, nerada šaubas par to, ka SSH, kā plaši izplatīta protokola apzīmējums lietots likumīgi.
Gan OpenSSH izstrādātāji, gan pats Ylönens bija IETF protokola standarta izstrādes darba grupas dalībnieki. IETF, pēc vairākām tikšanās reizēm, oficiāli noraidīja Ylönena prasību (kas tika pamatota ar bažām, ka tas radītu nevajadzīgu reģistrētu preču zīmju konflikta precedentu pret IETF) par protokola nosaukuma maiņu. Darba grupa vēlreiz uzsvēra, ka gan Secure Shell, gan SSH termini jau tobrīd tika lietoti, lai apzīmētu populāru protokolu, ne kādas firmas komercproduktu.

Izstrāde

OpenSSH izstrāde noris izmantojot OpenBSD projekta infrastruktūru, ko ik gadu finansē no OpenBSD savāktajiem ziedojumiem un ieņēmumiem par pārdotajiem diskiem un citiem aksesuāriem (t—krekli, uzlīmes u. tml.). Gandrīz visi OpenSSH izstrādātāji ir arī OpenBSD operētājsistēmas programmētāji. Abu projektu izvirzītie mērķi un prioritātes ir identiskas — izstrādāt iespējami drošāku pirmkodu. OpenSSH izstrādes process, lai gan atvērts un visiem pieejams, tomēr var tikt uzskatīts par samērā konservatīvu, kas skaidrojams ar SSH protokola nozīmīgo lomu visu pasaules datortīklu infrastūrā. Tādejādi, lai arī licence neparedz legālas konsekvences atklāto kļūdu vai ievainojamību rezultātā, uz OpenSSH izstrādātāju pleciem gulstas liela atbildība. Vēljovairāk tāpēc, ka OpenSSH implementācija ir kļuvusi par teju vai de facto standartu, izmantojot to attālinātai serveru administrēšanai, drošai autorizācijai un datņu kopēšanai. OpenSSH projekta izstrādātā programmatūra ir iekļauta neskaitāmās operētājsistēmu versijās, gan komerciālās, gan atvērtā koda sistēmās, sākot no Cisco Systems, Inc. Ethernet maršrutizātoriem un ugunsmūriem biznesa-līmeņa sistēmās un beidzot ar nu jau reti sastopamām UNIX tipa sistēmām vai populāriem Linux distributīviem. Pilns atbalstīto sistēmu saraksts pieejams OpenSSH oficiālajā mājaslapā. Periodiski OpenSSH izstrādātāji par savas programmatūras izplatību Internetā ievāc statistiku, kas var kalpot paštīksmināšanās un statistikas mērķiem. To veic izmantojot Nilsa Provosa izstrādāto skenēšanas programmu — ScanSSH. ScanSSH veic pilnu Internetā lietoto IP adrešu diapazona skenēšanu, pieslēdzoties pie ikviena servera vai darbstacijas, kas atbild uz 22 otrā porta (noklusētais SSH servera ports) vaicājumu. Uzsākot autorizācijas dialogu ar SSH serveri, ScanSSH programmatūrai ir iespēja noskaidrot SSH servera implementācijas un lietotā protokola versiju. Statistika par iepriekšējām skenēšanas reizēm atrodama OpenSSH mājaslapā.

Sistēmneatkarības nodrošināšana

Daļēji tāpēc, ka OpenSSH jāveic autentifikācija, darbību, kas nav pilnīgi sistēmneatkarīga un, kas tāpēc prasa dažādu implementāciju, kas atkarīga no operētājsistēmas tipa, projektam jānodrošina plašaptveroša sistēmneatkarību nodrošinoša infrastruktūra. Lai to neiekļautu operētājsistēmā OpenBSD, uz kuras, vispirmāmkārtām, noris izstrādes darbs, versijas, kam nepieciešama sistēmneatkarība un atšķirīgas, uz OpenBSD nesastopamas, programmēšanas saskarsmes, tiek izstrādātas atsevišķi. Tās izstrādā par portabilitāti atbildīga komanda un to relīzes ir pazīstamas kā "viegli pārnesamās, jeb sistēmneatkarīgās versijas". Līdzīgu izstrādes modeli izmanto arī citi OpenBSD projekti, piemēram, OpenNTPD. Tas garantē pirmkoda integritāti, vienkāršību un kvalitāti. Sistēmneatkarību nodrošinošā izstrādes grupa lieto automatizētu kompilēšanas un regresijas testu izpildes infrastruktūru, kas par veiksmīgi nokārtotiem, vai gluži otrādi — nenokārtotiem testiem ziņo regresijas testu mājaslapā. Atkarībā no izstrādes procesa gaitas un tā, cik nesen esošais pirmkoda koks ir ticis sinhronizēts ar īsto OpenBSD versiju, mājaslapā situācija atšķiras — bieži vien, operētājsistēmas prasa īpašu pirmkoda pielāgošanu programmkoda videi.

Protokolu savietojamība

OpenSSH versijas, kas jaunākas par 2.0, atbalsta gan SSH 1.3, gan SSH 1.5 protokola standartus, nodrošinot savietojamību ar lielāko daļu UNIX un Windows operētājsistēmu komerciālajām implementācijām. Sākot ar 2.0. versiju, papildus SSH 1.3 un 1.5 protokola standartu atbalstam, tiek nodrošināta pilnīga savietojamība ar 2.0. protokola specifikāciju; tāpat, OpenSSH izvairījās no RSA algoritma lietošanas — un tā vietā lietoja no patentiem brīvās alternatīvas DH un DSA. Sākot ar versiju 2.5.0., ir pieejams pilns SFTP protokola atbalsts un SFTP servera subsistēma — sftp-server strādā ar abām — SSH1 un SSH2 versijām.

Portu pāradresācija

Lielākā daļa programmu, kas lieto TCP konekcijas, var tikt pārraidītas caur drošu, kriptētu tunneli, izmantojot OpenSSH. Tāpat, to lieto, lai multipleksētu papildus TCP konekcijas, izmantojot vienu SSH sesiju. Tas lieti noder, lai caur publisku datortīklu varētu lietot nekriptētus protokolus, vai, ja ir vajadzība, apiet ugunsmūrus, kas konfigurēti datu filtrēšanai. UDP savienojumus var tunelēt par palīgu ņemot tādas programmas kā netcat. Par bieži lietotiem piemēriem kalpo X Window Sistēma, http lietojot starpniekserveri vai VNC. X Window Sistēmas tunelis bieži vien tiek izveidots automātiski, lai starp diviem UNIX lietojošiem datoriem, GUI programmas uz attālinātiem serveriem varētu lietot, vienkārši ievadot to nosaukumus:
 ssh -Y user@example.com password: $ xclock
Turklāt, daļa programmatūras var tikt konfigurēta, lai, izmantojot OpenSSH, automātiski izveidotu drošu tuneli. Par piemēriem var kalpot tāda programmatūra kā DistCC, CVS, rsync, un fetchmail. Programmas, kur datu tunelēšana ir iespējama, bet sarežģīta ir ftp, kuru var aizvietot ar tās drošo alternatīvu -- sftp, un SMB. Dažās operētājsistēmās, attālinātas failu sistēmas var tikt lietotas izmantojot kriptētus tuneļus, izmantojot tādus risinājumus kā shfs, lufs vai podfuk.

SOCKS

OpenSSH ir pa spēkam izveidot ad hoc SOCKS starpniekserveri, kas var kalpot par efektīvāku vidutāju, kā vienkārša portu pāradresācija. Piemēram:
 ssh -D1080 lietotājs@example.com
izveido lokālu SOCKS serveri, kas atbildēs uz "localhost:1080" pieprasījumiem.

Tuneļus izmantojošs VPN risinājums

Sākot ar 4.3 versiju, OpenSSH implementē OSI 2/3 līmeņa "VPN". Līdz šim, tā ir pati pielāgojamākā OpenSSH tunelēšanas implementācija, ļaujot lietotnēm "caurspīdīgi" izmantot attālinātu datortīklu resursuss bez "soksifikācijas".

Maldīgi uzskati

Nosaukumā lietotais prefikss Open- daudzus vedina domāt, ka arī projekts OpenSSL, no kura kriptogrāfiju nodrošinošā programmēšanas interfeisa, tiešā veidā, ir atkarīgs arī pats OpenSSH projekts, ir OpenBSD izstrādātāju produkts. Vēljovairāk tāpēc, ka OpenBSD tik tiešām vada un izstrādā virkni šādu, atvērtu, uz drošību orientētu un popularitāti ieguvušu produktu izstrādi. Tomēr tā ir kļūda. OpenSSL tiek izstrādāts bez tiešas OpenBSD projekta ietekmes, tā oficiālais izstrādes komandas nosaukums ir "OpenSSL Projekta izstrādes komanda", kurā ietilpst virkne, ar OpenBSD nesaistītu programmētāju, turklāt projekts lieto OpenBSD neraksturīgu licenci. Taisnības labad gan jāatzīst, ka arī OpenBSD sistēmas programmētāji ir devuši savu artavu OpenSSL attīstībā, ziņojot par atklātajam kļūdām vai drošības ievainojamībām, daļēji tāpēc, ka OpenSSL ir iekļauts jau OpenBSD bāzes instalācijā, un daļēji tāpēc, ka OpenSSL tiek pielietots lielā daļā programmatūras, kur nepieciešama OpenSSL kriptogrāfijas bibliotēka (libcrypto), kā piemēram, Apache, IPSec implementācijā, OpenSSH, OpenNTPD un citur.