**OpenSSH** jeb **Open Secure Shell** ir komplekss servera un lietojumprogrammu risinājums, kas nodrošina korespondences, datu apmaiņas un klienta—servera sesiju kriptēšanu datortīklos, implementējot un attīstot brīvu SSH protokola versiju. Gandrīz viss projekta kods ir BSD licencēts Archived 2013. gada 7. februārī, *Wayback Machine* vietnē.. Pirmkods, kas nav BSD licencēts neuzliek, un nedrīkst uzlikt, vairāk ierobežojumu (tātad projekts neiekļauj kodu, kas ir licencēts ar GPL) kā pati BSD licence. OpenSSH tika radīts kā no patentiem brīva, un bez maksas pieejama alternatīva Secure Shell īpašumprogrammatūrai. Šobrīd OpenSSH ir populārākā SSH implementācija, aizņemot aptuveni 88% (2005. gada statistika) tirgus daļas. Projektu vada Teo de Rots no Kalgari, Albertas provinces, Kanādā.

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**[novecojusi saite] 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.

### Programmatūras patenti

Ja radušās problēmas dažādu programmatūras patentu dēļ, OpenBSD izstrādātāji vienmēr ir bijuši konsekventi — kods no projekta ir ticis izņemts, iekļaujot tikai pilnībā atvērtu un ar viņu licencēšanas politiku saskanošu pirmkodu. Tādejādi, OpenSSH atšķiras no oriģinālās implementācijas ar to, ka projekts neiekļauj patentētu vai ar GPL licencētu kodu. Šādas izstrādes politikas rezultātā no sākotnējās OpenSSH versijas tika izņemtas šādas komponentes:

* RSA, tagad sastopama OpenSSL kriptogrāfijas bibliotēkas programmēšanas interfeisā
* IDEA pilnībā izņemta, saistībā ar algoritma programmatūras patentu
* DES tagad ārēja komponente no OpenSSL bibliotēkas
* GMP koda funkcionalitāte aizvietota ar BN pirmkodu no OpenSSL
* Zlib — izmanto ārējo zlib bibliotēku
* The make-ssh-known-hosts script is no longer included
* TSS atbalsts ir pilnībā izņemts un to nav plānots atjaunot
* MD5 tagad ārēja komponente OpenSSL bibliotēkā
* RC4 atbalsts aizvietots ar ARC4 no OpenSSL bibliotēkas
* Blowfish tagad ārēja komponente OpenSSL bibliotēkā

### 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.

Iespējas
--------

* Stingra kriptogrāfija (3DES, *Blowfish*, AES, *Arcfour*)
* X11 protokola pāradresācija (kriptējot X Window Sistēmas datu plūsmu)
* Portu pāradresācija (iespēja kriptēt kanālu, lai izmantotu *mantotu sistēmu*, t.i. nekriptētus protokolus)
* Stingri realizēta autentifikācija (ar publisko atslēgu, vienreiz lietojamu paroli vai Kerberos autentifikāciju)
* Aģentu pāradresācija (*Single-Sign-On*)
* Savietojamība (Produkts savietojams ar SSH 1.3, 1.5, un 2.0 protokola standartiem)
* SFTP klienta un sarvera realizācija, gan SSH1, gan SSH2 protokola versijās
* Kerberos un AFS *biļešu apmaiņa* (vienreiz autorizējoties, lietotājs spēj lietot Kerberos un AFS servisus bez atkārtotas paroles ievades)
* Datu saspiešana (uzlabo datu pārraides sniegumu lēnos datu tīklos) izmantojot zlib (populāra, atvērtā koda kompresijas bibliotēka)

### Iekļautās programmas

OpenSSH programmatūras komplekts iekļauj šādas lietojumprogrammas:

* ssh, rlogin un telnet aizvietotājs:

`ssh lietotājs@example.com`
* scp, kas ir rcp aizvietotājs:

`scp lietotājs@example.com:somefile .`
* sftp, iecerētais ftp protokola aizvietotājs:

`sftp lietotājs@example.com`
* sshd, SSH protokola daemons:

`sshd`
### 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".

Autentifikācija
---------------

OpenSSH serveris var autentificēt sistēmas lietotājus izmantojot vienu no iebūvētajām autentifikācijas sistēmām:

* publisko atslēgu,
* keyboard-interactive (paroles un challenge-response), vai
* Kerberos/GSSAPI.

Bez jau iepriekš nosauktajām, OpenSSH bieži vien var izmantot papildus autentifikācijas metodes, ja tādas ir pieejamas uz lietotās operētājsistsēmas, kā piemēram, BSD autentifikācijas sistēmu (bsd\_auth) vai PAM, kas ļautu izmantot tādus autentifikācijas veidus, kā vienreiz lietojāmās paroles.

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.

Atsauces
--------

1. **^**  Damiēna Millera paziņojums par OpenSSH 4.3 iznākšanu openssh-unix-dev@mindrot.org izstrādātāju forumā, skat. šeit[novecojusi saite].
2. **^**  Tatu Ilonena e—pasts openssh-unix-dev izstrādātāju forumā, skat. šeit Archived 2021. gada 22. janvārī, *Wayback Machine* vietnē.. 2001. gada 14. februāris. Skatīts 2006. gada 11. aprīlī.
3. **^**  *Newsforge* avīžraksts: "Ylönen: We own ssh trademark, but here's a proposal", skat. šeit. 2001. gada 16. februāris. Skatīts 2006. gada 11. aprīlī.
4. **^**  *CNet News* avīžraksts: "Ssh! Don't use that trademark", skat. šeit. 2001. gada 14. februāris. Skatīts 2006. gada 11. aprīlī.
5. **^**  *Network World* avīžraksts: "SSH inventor denied trademark request": skat. šeit. 2001. gada 16. februāris. Skatīts 2006. gada 11. aprīlī.

Ārējās saites
-------------

* OpenSSH oficiālā mājaslapa
* OpenSSH — tiem, kas tankā (par autorizāciju ar RSA publisko atslēgu, latviski)
* OpenSSH licence un programmatūras autori Archived 2013. gada 7. februārī, *Wayback Machine* vietnē.
* Sistēmneatkarīgās versijas
* Darena Tukera OpenSSH mājaslapa
* OpenSSH procesa privilēģiju nomešana
* OpenSSH, 101 pielietojums: Pirmā daļa
* OpenSSH, 101 pielietojums: Otrā daļa
* OpenSSH—portable pirmkoda koks
* OpenSSH klienta konfigurācijas piemērs
* OpenSSH servera konfigurācijas piemērs
* OpenSSH versija *Microsoft Windows* operētājsistēmai

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * s
* d
* l
Unix komandrindas saskarnes programmas un čaulas komandas |
| --- |
|  |
| Failu sistēma | 
* cat
* chmod
* chown
* chgrp
* cksum
* cmp
* cp
* dd
* du
* df
* file
* fsck
* fuser
* ln
* ls
* mkdir
* mount
* mv
* pax
* pwd
* rm
* rmdir
* split
* tee
* touch
* type
* umask

 |
|  |
| Procesi | 
* at
* bg
* chroot
* cron
* fg
* kill
* killall
* nice
* pgrep
* pkill
* ps
* pstree
* time
* top

 |
|  |
| Lietotāja vide | 
* clear
* env
* exit
* finger
* history
* logname
* mesg
* passwd
* su
* sudo
* uptime
* talk
* tput
* uname
* w
* wall
* who
* whoami
* write

 |
|  |
| Teksta apstrāde | 
* awk
* banner
* basename
* comm
* csplit
* cut
* diff
* dirname
* ed
* ex
* fmt
* fold
* head
* iconv
* join
* less
* more
* nl
* paste
* printf
* sed
* sort
* spell
* strings
* tail
* tr
* uniq
* vi
* wc
* xargs
* yes

 |
|  |
| Čaulas komandas | 
* alias
* cd
* echo
* test
* unset
* wait

 |
|  |
| Tīkli | 
* dig
* host
* ifconfig
* inetd
* netcat
* netstat
* nslookup
* ping
* rdate
* rlogin
* route
* ssh
* traceroute

 |
|  |
| Meklēšana | 
* find
* grep
* locate
* whatis
* whereis

 |
|  |
| Dokumentācija | 
* apropos
* help
* man

 |
|  |
| Dažādi | 
* bc
* dc
* cal
* expr
* lp
* od
* sleep
* true un false

 |

 |