Güvenli kabuk

Güvenli Kabuk, (), ağ hizmetlerinin güvenli olmayan bir ağ üzerinde güvenli şekilde çalıştırılması için kullanılan bir kriptografik ağ protokolüdür. En iyi bilinen örnek uygulaması bilgisayar sistemlerine uzaktan oturum açmak için olandır.

SSH, bir SSH istemcisini bir SSH sunucusuna bağlayarak istemci-sunucu mimarisi çerçevesinde güvenli olmayan bir ağ üzerinde güvenli kanal sağlar. Yaygın uygulamalar arasında uzaktan komut satırı girişi ve uzaktan komut çalıştırma bulunur, ama herhangi bir ağ hizmeti de SSH ile güvenceye alınabilir. Protokol belirtimi SSH-1 ve SSH-2 olarak adlandırılan iki ana sürüm arasında ayrım yapar.

Protokolün en görünür uygulaması, Unix benzeri işletim sistemlerinde kabuk hesaplarına erişim içindir, ancak Windows'ta da sınırlı bir kullanım alanı görür. 2015 yılında Microsoft, gelecekteki bir sürümde SSH'ye yerel destek vereceğini duyurdu.

SSH, Telnet ve güvenli olmayan uzak kabuk protokolleri olan Berkeley rlogin, rsh ve rexec gibi protokollerin yerini almak için tasarlanmıştır. Bu protokoller, özellikle parolaları, düz metin olarak göndererek, paket analizine karşı savunmasız bırakıyor. SSH tarafından kullanılan şifreleme, Internet gibi güvenli olmayan bir ağ üzerinden verilerin gizliliğini ve bütünlüğünü sağlamaya yöneliktir, ancak Edward Snowden tarafından sızdırılan dosyalar, Ulusal Güvenlik Ajansı'nın bazen SSH şifresini çözerek SSH oturumlarının içeriğini okuyabildiğini gösterir.

6 Temmuz 2017'de, hükûmet şeffaflık organizasyonu WikiLeaks ABD Merkezi İstihbarat Teşkilatının, SSH kullanıcıları tarafından güvenli olmayan sistemler üzerinde başlatılan SSH bağlantılarını yakalamak için Microsoft Windows veya GNU/Linux işletim sistemlerini çalıştıran bilgisayarlara kurulabilecek araçlar geliştirdiğini doğruladı.

SSH, uzak bilgisayarın kimliğini doğrulamak ve gerektiğinde kullanıcının kimliğini doğrulamasına izin vermek için açık anahtarlı şifreleme kullanır. SSH'yi kullanmanın birkaç yolu vardır; bir tanesi, bir ağ bağlantısını basitçe şifrelemek için otomatik olarak oluşturulan özel-genel anahtar çiftlerini kullanmak ve sonra oturum açmak için parola kimlik doğrulaması kullanmaktır.

Bir diğeri, kimlik doğrulama işlemini gerçekleştirmek için, kullanıcı veya programların bir parola belirtmek zorunda kalmadan oturum açmasına izin veren, el ile oluşturulmuş bir ortak-özel anahtar çifti kullanmaktır. Bu senaryoda, herkes farklı bir anahtar (açık ve gizli) çifti oluşturabilir. Açık anahtar, eşleşen gizli anahtarın sahibine erişmesi gereken tüm bilgisayarlara yerleştirilir (sahip gizli anahtarını saklı tutar). Kimlik doğrulama özel anahtara dayalıyken, kimlik doğrulama sırasında anahtarın kendisi ağ üzerinden aktarılmaz. SSH, yalnızca ortak anahtarı sunan kişinin eşleşen özel anahtara sahip olup olmadığını doğrular. SSH'nin tüm sürümlerinde, bilinmeyen açık anahtarların doğrulanması önemlidir, yani açık anahtarları geçerli olarak kabul etmeden önce kimlikle ilişkilendirmek gerekir. Bir saldırganın açık anahtarını doğrulama olmadan kabul etmek, yetkisiz bir saldırganı geçerli bir kullanıcı olarak yetkilendirir.

Unix benzeri sistemlerde, yetkilendirilmiş açık anahtarların listesi genellikle  ~/.ssh/authorized_keys dosyasında, uzaktan oturum açmasına izin verilen kullanıcının giriş dizininde saklanır. Bu dosya, sahibi ve tüm yetkili kullanıcıdan başka bir şey tarafından yazılabilir değil ise sadece SSH tarafından değiştirilebilir. Uzak uçta açık anahtar varsa ve yerel uçta eşleşen gizli anahtar varsa, parolayı yazmanız artık gerekmemektedir (Message-Passing Interface (MPI) yığını gibi bazı yazılımların düzgün çalışması için bu parolasız erişim gerekebilir). Ancak, ek güvenlik için gizli anahtarın kendisi bir şifre ile kilitlenebilir.

Gizli anahtar standart yerlerde de aranabilir ve tam yolu bir komut satırı ayarı olarak belirlenebilir (ssh için -i seçeneği). Ssh-keygen yardımcı programı, her zaman çiftler halinde açık ve gizli anahtarlar üretir.

SSH, ayrıca otomatik olarak oluşturulan anahtarlar tarafından şifrelenen parola tabanlı kimlik doğrulamayı da destekler. Bu durumda, saldırgan meşru sunucu tarafını taklit edebilir, parola isteyebilir ve parolayı elde edebilir (man-in-the-middle saldırısı). Ancak, bu durum sadece, iki tarafın daha önce hiç birbirlerinin kimliklerini doğrulamadığında SSH'nin daha önce kullanılan sunucu tarafının anahtarını hatırladığı için mümkündür. SSH istemcisi, önceden bilinmeyen yeni bir sunucunun anahtarını kabul etmeden önce bir uyarı verir. Parola kimlik doğrulaması kapatılabilir.

SSH genellikle uzak makineye giriş yapmak ve komutları çalıştırmak için kullanılır, ayrıca tünel açma, TCP portlarını ve X11 bağlantılarını iletmeyi de destekler; SSH dosya transferi (SFTP) veya güvenli kopyalama (SCP) protokolleri kullanarak dosyaları aktarabilir. SSH istemci-sunucu modelini kullanır.

Her ikisi de MacOS, Linux'un çoğu dağıtımı, OpenBSD, FreeBSD, NetBSD, Solaris ve OpenVMS gibi çoğu modern işletim sistemlerinde yaygın olarak bulunur. Özellikle, Windows varsayılan olarak SSH içermeyen birkaç modern masaüstü / sunucu işletim sistemlerinden biridir. Sahipli, ücretsiz ve açık kaynaklı (örneğin PuTTY, ve Cygwin'in bir parçası olan OpenSSH sürümü) çeşitli karmaşıklıkta ve bütünlükte sürümleri mevcuttur. Yerli Linux dosya yöneticileri (örneğin Konqueror) sürükle-bırak özelliğine sahip bölmeli bir grafik arayüzü sağlamak için FISH protokolünü kullanabilir. Açık kaynak kodlu bir Windows programı WinSCP arka plan olarak PuTTY kullanarak benzer dosya yönetimi (senkronizasyon, kopyalama, uzaktan silme) özelliği sağlar. Hem WinSCP hem de PuTTY, istemci makineye kurulum gerektirmeksizin, doğrudan bir USB sürücüsünden çalışacak şekilde paketlenmiştir. Windows'ta bir SSH sunucusu çalıştırabilmek için genellikle kurulum yapmak gerekir (örneğin Cygwin üzerinden). Windows 10 sürüm 1709'da, OpenSSH'nin resmi bir Win32 bağlantı noktası bulunur.

1995 yılında Finlandiya Helsinki Teknoloji Üniversitesi'nden araştırmacı Tatu Ylönen, kampüs ağında bir parola koklama saldırısı nedeniyle protokölün (şimdiki adı SSH-1) ilk versiyonunu tasarladı. SSH'nin amacı, güçlü kimlik doğrulaması sağlamayan ve gizliliği garanti etmeyen, rlogin, TELNET, ftp ve rsh protokollerinin yerini almaktı. Ylönen, uygulamasını Temmuz 1995'te ücretsiz olarak yayınladı ve araç hızla popülerlik kazandı. 1995'in sonuna doğru SSH kullanıcı tabanı elli ülkede 20.000 kullanıcıya ulaştı.

Aralık 1995'te Ylönen, SSH'ı pazarlamak ve geliştirmek için SSH Communications Security şirketini kurdu. SSH yazılımının orijinal sürümü, GNU libgmp gibi çeşitli ücretsiz yazılımlar kullandı, fakat daha sonra SSH Communications Security tarafından yayınlanan sürümlerle birlikte patentli bir yazılım halini aldı.

"Secsh" SSH protokolünün 2. versiyonundan sorumlu olan İnternet Mühendisliği Görev Gücü (IETF) adlı çalışma grubunun resmi adıydı. 2006 yılında, protokolün revize edilmiş versiyonu olan SSH-2, standart olarak kabul edildi. Bu versiyon SSH-1 ile uyumlu değildi. SSH-2'de SSH-1'e göre hem güvenlik ham de yeni özellik iyileştirmeleri mevcuttur. Daha iyi güvenlik, örneğin, Diffie–Hellman anahtar değişimi ve mesaj doğrulama kodları üzerinden güçlü bütünlük denetimi ile sağlanır.

SSH-2'nin yeni özellikleri arasında, tek bir SSH bağlantısı üzerinden herhangi bir sayıda kabuk oturumunu çalıştırma yeteneğini sayılabilir. SSH-2'nin üstünlüğü ve popülerliği nedeniyle, Lsh ve Dropbear gibi uygulamalar sadece SSH-2'ye destek vermektedirler.

Ocak 2006'da, 2.1 sürümü oluşturulduktan sonra, RFC 4253, hem 2.0 hem de daha önceki versiyonları destekleyen SSH sunucularının versiyon 1.99 olarak adlandırılması gerektiğini belirtmiştir. Bu gerçek bir sürüm değildir, fakat geriye dönük uyumluluk tanımlayan bir yöntemdir.

1999 yılında, ücretsiz bir yazılım sürümü sunmak isteyen geliştiriciler, açık kaynak lisansı ile yayınlanmış en son sürüm olan 1.2.12 sürümüne geri döndüler. Björn Grönvall'ın OSSH'si daha sonra bu kod tabanından geliştirildi. Kısa bir süre sonra, OpenBSD geliştiricileri Grönvall'ın kodunu çatalladılar ve OpenBSD'nin 2.6 sürümü ile birlikte gelen OpenSSH'yi yaratarak kapsamlı bir çalışma yaptılar. Bu versiyondan, OpenSSH'yi diğer işletim sistemlerine bağlamak için bir "taşınabilirlik" dalı oluşturuldu.

2005 itibarıyla, OpenSSH, çok sayıda işletim sisteminde varsayılan olarak gelen en popüler SSH uygulamasıydı. OSSH bu arada demode oldu. 7.6 sürümüyle birlikte SSH-1 desteğini çeken OpenSSH, SSH-2 protokolünü geliştirmeye ve desteklemeye devam ediyor.

SSH, çoğu Unix varyantı (Linux, Apple'ın macOS ve Solaris dahil BSD'leri) ve Microsoft Windows gibi pek çok platformda kullanılabilen bir protokoldür. Aşağıdaki uygulamalardan bazıları yalnızca belirli SSH istemcileri veya sunucuları ile kullanılabilen ya da uyumlu olan özellikler gerektirebilir. Örneğin, VPN yazmak için SSH protokolü kullanmak mümkündür, ama sadece OpenSSH sunucu ve istemci uygulamasıyla.

Bir portu yönlendirmek veya tünellemek için (Paketleri farklı ağlar arasında yönlendiren veya iki yayın alanını tek bir ağa bağlayan bir VPN ile karıştırılmamalıdır).

Windows sistemleri, kullanıma açık oturum açma denemeleri gelişigüzel kabul etmediğinden dolayı, bu özelliğe gerek vardır. Özelliğin Permission denied ayarları olması gerekir. Bu özellik bu şekilde kalması gerekir.

Taşıma katmanı (RFC 4253). Bu katman, ilk anahtar değişiminin yanı sıra sunucu kimlik doğrulamasını halleder ve şifreleme, sıkıştırma ve bütünlük doğrulaması yapar. Üst katmana, her biri 32.768 bayta kadar olan düz metin paketlerini göndermek ve almak için bir arayüz (daha fazlasına izin verilebilir) sunar. Aktarım katmanı ayrıca, genellikle 1 GB'lik veri aktarıldıktan sonra veya 1 saat geçtikten sonra, hangisi daha önce gerçekleşirse, anahtar yeniden değişimini düzenler.

açık anahtar: genellikle en az DSA veya RSA anahtar çiftlerini, diğer uygulamalarıyla birlikte ayrıca X.509 sertifikaları destekleyen, açık anahtar tabanlı kimlik doğrulama için bir yöntem.

klavye-etkileşimli (RFC 4256): sunucunun bilgi girmek için bir veya daha fazla istek gönderdiği çok yönlü bir yöntemdir ve istemci bunları görüntüler ve kullanıcı tarafından girilen yanıtları geri gönderir. S/Key ve SecurID gibi tek kullanımlık şifre kimlik doğrulaması sağlamak için kullanılır. PAM, etkin bir şekilde parola doğrulaması sağlamak için temel ana bilgisayar kimlik doğrulama sağlayıcısı olduğunda bazı OpenSSH yapılandırmaları tarafından kullanılır, bazen yalnızca düz parola kimlik doğrulama yöntemini destekleyen bir istemciyle oturum açılamamasına neden olur.

SSH oturumlarına tek oturum açma yeteneği sağlayan Kerberos 5 veya NTLM gibi harici mekanizmaları kullanarak SSH kimlik doğrulaması gerçekleştirmek için genişletilebilir bir şema sağlayan GSSAPI kimlik doğrulama yöntemleri. Bu yöntemler genellikle OpenSSH'nin çalışan bir GSSAPI uygulamasına sahip olmasına rağmen, kuruluşlarda kullanılmak üzere ticari SSH uygulamaları tarafından uygulanır.

Bu açık mimari, SSH'nin güvenli bir kabuğun ötesinde çeşitli amaçlarla kullanılmasına izin veren önemli bir esneklik sağlar. Taşıma katmanının işlevselliği tek başına Taşıma Katmanı Güvenliği (TLS) ile karşılaştırılabilir; kullanıcı kimlik doğrulama katmanı özel kimlik doğrulama yöntemleri ile büyük ölçüde genişletilebilir; ve BEEP'te olan ve TLS'de geçerli olmayan bir özellik olarak bağlantı katmanı, birçok ikincil oturumu tek bir SSH bağlantısına çoğaltabilir.

1998'de, SSH 1.5 sürümünde, protokolün bu sürümünde kullanılan CRC-32'den kaynaklı yetersiz veri bütünlüğü koruması nedeniyle, şifrelenmiş bir SSH akışına yetkisiz olarak içerik sokulmasına izin veren bir güvenlik açığı tarif edilmiştir. Çoğu uygulamada SSH Compensation Attack Detector olarak bilinen bir düzeltme tanıtıldı. Bu güncellenmiş uygulamaların birçoğu, saldırganın root izni ile herhangi kodu çalıştırabilmesine izin veren yeni bir tamsayı taşması zaafiyeti içeriyordu.

Ocak 2001'de, saldırganların IDEA şifreli bir oturumun son bloğunu değiştirmesine izin veren bir güvenlik açığı keşfedildi. Aynı ay, kötü amaçlı bir sunucunun bir istemci kimlik doğrulamasını başka bir sunucuya iletmesine izin veren başka bir güvenlik açığı keşfedildi..

SSH-1, onu savunmasız hale getiren içsel tasarım kusurlarına sahip olduğundan, genel olarak geçersiz sayılır. SSH-1'e geri dönüş açıkça devre dışı bırakılmalıdır. Çoğu modern sunucu ve istemci SSH-2'yi desteklemektedir.

Kasım 2008'de, tüm SSH sürümleri için, standart varsayılan şifreleme modu olan CBC kullanılarak şifrelenmiş bir şifreli metin bloğunun 32 bitlik düz metninin kurtarılmasına izin veren teorik bir güvenlik açığı keşfedilmiştir. En basit çözüm, SSH'a saldırıya karşı direnç kazandırdığından CBC modu yerine CTR modu kullanmaktır.

28 Aralık 2014'te Der Spiegel, Ulusal Güvenlik Ajansı'nın SSH trafiğinin bazılarının şifresini çözebileceğini söyleyen muhbir Edward Snowden'in sızdırdığı gizli bilgileri yayınladı. Böyle bir süreçle ilgili teknik detaylar açıklanmadı.

6 Temmuz 2017'de, hükûmet şeffaflığı aktivist örgütü WikiLeaks, CIA'nin Bilgi İşlem Merkezi'nin hem Windows hem de Linux işletim sistemlerinde SSH protokolünü kullanan “güvenli” iletişimlere nasıl girdiğini açıklayan ABD Merkezi İstihbarat Kurumu belgelerini yayınladı. WikiLeaks, CIA'nin BothanSpy ve Gyrfalcon programlarının (SSH kimlik bilgilerini engellemek ve genişletmek için tasarlanmış, ancak farklı saldırı sistemlerine sahip farklı işletim sistemlerinde çalışacan) resmi kullanım kılavuzlarını da ekledi.

BothanSpy, Microsoft Windows platformunda SSH istemci programı Xshell'i hedefleyen ve tüm etkin SSH oturumları için kullanıcı kimlik bilgilerini çalan bir implanttır.

Bu kimlik bilgileri, parola  tabanlı kimlik doğrulaması yapılmış ise  kullanıcı adı ve parola, açık anahtar kimlik doğrulaması kullanılıyor ise dosya adı ve gizli SSH anahtarıdır. BothanSpy çalınan kimlik bilgilerini CIA tarafından kontrol edilen bir sunucuya gönderebilir (böylece implant, hedef sistemdeki diske asla dokunmaz) ya da başka yollarla daha sonra exfiltrasyon için şifreli bir dosyaya kaydedebilir. BothanSpy, hedef makinede bir Shellterm 3.x uzantısı olarak kurulmuştur.

Gyrfalcon, Linux platformlarında OpenSSH istemcisini hedefleyen bir implanttır (centos, debian, rhel, suse, ubuntu). İmplant sadece aktif SSH oturumlarının kullanıcı bilgilerini çalmakla kalmaz, aynı zamanda tam veya kısmi OpenSSH oturum trafiğini de toplayabilir.

SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. Ssh ile ağa bağlı olan iki bilgisayar arasında veri aktarımı güvenlik kanalı üzerinden güvensiz bir ağda yapılır. Bu durumda ağda Ssh ile haberleşen makinelerden biri ssh sunucusu diğeri ssh istemcisi olur. Bu protokol şartları SSH-1 ve SSH-2 olmak üzere iki önemli sürüm üzerinden birbirinden ayrılır.

Ssh kabuk hesabına erişim için Unix ve benzeri işletim sistemlerinde protokolün en iyi uygulaması olarak bilinir, ama aynı zamanda Windows üzerindeki hesaplara erişim için de kullanılabilir. Ssh Telnet ve diğer uzaktan kabuğa erişim yapan güvensiz protokollerin (Berkeley rsh ve rexec protokolü gibi) yerine güvenli veri iletimini sağlaması için tasarlanmıştır.

SSH uzaktaki makineye bağlanıp kimlik kanıtlaması yapmak için açık anahtarlı şifrelemeyi kullanır ve bu sayede kullanıcıya sistemi kullanmasına izin vermiş olur. SSH kullanmanın birçok farklı yolu vardır. Birincisi otomatik olarak açık-gizli anahtar çifti üretme ve parolayı kullanarak yetki sahibi olmak.

Diğeri ise kimlik kanıtlaması için açık ve gizli anahtar çiftini manuel olarak üretmek, bu durum kullanıcılara ya da programlara özel bir parola kullanmadan sistemde kimlik kanıtlaması yapmayı sağlar. Bu durumda açık ve gizli anahtarı üreten kişi birbiriyle eşleşen bir anahtar çifti (gizli ve açık) üretmiş olur ve ürettiği gizli anahtarı kendinde muhafaza eder. Kimlik kanıtlaması yapılması gizli anahtara göredir ve gizli anahtar hiçbir şekilde ağ üzerinden başka bir yerdeki makineye gönderilmemelidir. SSH sadece makine üzerinde aynı kişiye ait gizli anahtara karşılık gelen açık anahtar olup olmadığını kontrol eder. SSH'ın tüm sürümlerinde açık anahtar geçerli sayılmadan önce bilinmeyen açık anahtarın doğrulanması önemlidir (açık anahtar sahibinin bilgisiyle ilişkilendirilmiştir).

Unix benzeri sistemlerde, kullanıcıların ev dizininlerinde uzaktaki makineye bağlanamaya izin veren yetkili açık anahtarlar depolanır. Ev dizininde depolandığı yer ise ~/.ssh/authorized_keys dosyasıdır. Açık anahtar uzaktaki makine üzerinde mevcut olduğunda ve yereldeki makinenin gizli anahtarıyla eşleşdiğinde, istemci gizli anahtarını açmak için olan anahtarı doğru girerse uzaktaki makinede kimlik kanıtlaması yapılmış olur.

Aynı zamandan gizli anahtar standart olarak belirli bir yerde bulunur. Eğer bu anahtarın makine üzerindeki yeri değiştirildiyse anahtarın tam yolu komut satırından belirtilmelidir. (ssh komutu için -i parametresi kullanılarak). ssh-keygen kullanıldığında ise her zaman bir açık ve gizli anahtar çifti üretilmiş olunur.

SSH aynı zamandan parola tabanlı kimlik kanıtlamayı destekler. Bu durumda saldırganlar parola sorulduğu için parolayı araya girerek bulmaya çalışabilirlerdi. Ancak bu sadece uzaktaki makinede daha önce hiç kimlik kanıtlaması yapılmadıysa geçerli olur. Sadece bir kez bile uzaktaki makinede kimlik kanıtlaması yapıldığında SSH bu parolayı hatırlar ve parola ile kimlik kanıtlaması geçersiz olur.

-A : Ana bilgisayar anahtarları, varsayılan anahtar dosyası yolu, boş bir parola, anahtar türü için varsayılan bitler ve varsayılan yorum ile oluşturulur.

-e : Bu komut, özel veya genel bir OpenSSH anahtar dosyasını okur ve seçenek tarafından belirtilen biçimlerden birinde bir genel anahtarı stdout'a yazar.

-i : Bu komut, şifrelenmemiş bir özel (veya genel) anahtar dosyasını seçenek tarafından belirtilen biçimde okuyacak OpenSSH uyumlu bir özel (veya genel) anahtarı yazdıracaktır.

SSH genellikle uzaktaki makinede oturum açma ve komut çalıştırma için kullanılır, fakat aynı zamanda tünellemeyi de destekler, TCP portları üzerinden taşınır ve X11 bağlantısı sağlar. SSH dosya gönderme işlemini SSH dosya transfer protokolü (SFTP) ya da güvenli kopyalama protokolüyle (SCP) yapar. SSH istemci-sunucu modelini kullanır.

SSH istemci programı genenllikle bağlantının kurulması için SSH'ı arka planda (daemon olarak) çalıştırır. SSH iki yayıgın işletim sistemi olan Mac OS X ve pek çok GNU/Linux dağıtımında, OpenBSD, FreeBSD, NetBSD, Solaris ve OpenVMS mevcuttur. Özellikle, Windows az modern olan masaüstü/sunucu işletim sistemlerinden biri olarak varsayılan olarak SSH içermez.

SSH, bulut bilgisayarların bağlanma problemini çözdüğü için önemlidir, bulut tabanlı sanal makinenin internette güvenlik konularında açığa çıkabilecek problemlerini de önler. SSH tüneli internet üzerinde sanal makinelere güvenlik duvarı (firewall) sayesinde güveli bir yol sağlayabilir.

Tatu Ylönen Finlandiya'daki Helsinki Üniversitesi'nde 1995'te araştırmacı olarak görev yapmıştır. Şimdi SSH-1 olarak bilinen protokolün ilk versiyonunu tasarlamıştır. SSH'ın amacı daha önceki rlogin, TELNET ve rsh protokollerinin (bu protokoller güçlü bir kimlik kanıtlama kuralı ya da gizliliği garantilemezler) yerine geçme olmuştur. Ylönen yaptığı çalışmayı ücretsiz olarak Temmuz 1995'te çıkardı ve bu yaptığı çalışma hızlıca popülerlik kazandı. İlerleyen zamanlarda 1995 sonlarına doğru, SSH kullanıcı sayısı 50 farklı ülkede 20000'lere ulaştı.

Aralık 1995'te ise, Ylönen SSH Communications Security'yi pazarladı ve böylece SSH geliştirdi. SSH yazılımının orijinal sürümü özgür yazılımların çeşitli parçalarında kullanıldı, örnek olarak GNU libgmp gibi, fakat sonraki sürümlerinde SSH Secure Communications'ı gittikçe artan patentli bir yazılım olarak geliştirdi.

1998'de SSH 1.5'te güvenlik açığı olduğu tanımlandı. Protokolün bu versiyonunda CRC-32 kullanıldı. Bu güvenlik açığı şifrelenmiş SSH akışına veri bütünlüğü korumasının yetersizliği nedeniyle yetkisiz girişler yapılabilmesiydi. SSH Compensation Attack Detector tarafından yapılan birçok düzeltmeler sunuldu. Bu işlem güncellemelerinin pek çoğu tam sayı taşma zayıflığı içerir, bu durum ise saldırganlara arka planda çalışan SSH'ın haklarıyla (genellikle yönetici olarak) isteklerine göre kod çalıştırmaya izin verir.

Ocak 2001'de başka bir güvenlik açığı saptandı, bu ise saldırganların Uluslararası Veri Şifreleme Algoritması (IDEA) ile yapılan şifrelemede son bloğu değiştirmeye izin veren bir güvenlik açığıydı. Aynı ayda belirlenen başka bir güvenlik açığı ise kötü amaçlı sunuculara istemci yetkilendirmesini başka bir sunucunun yapmasına izin veren bir açıktı.

1999'da, geliştiriciler SSH'ın özgür yazılım olan halini istediler ve bu yüzden orijinal SSH programının 1.2.12 olan sürümüne (bu sürümü özgür yazılım olarak çıkmıştı) geri döndüler. Björn Grönvall daha sonra OSSH'ı bu kod tabanıyla geliştirdi. Kısaca bundan sonra, OpenBSD geliştiricileri Grönvall'ın kodunu çatalladı ve geniş ölçüde bunun üzerinde çalıştılar, OpenSSH oluşturuldu ve OpenSD'nin 2.6 sürümüyle birlikte çıktı. Bu sürümde, OpenSSH'ı diğer işletim sistemlerine taşımak için alan oluşturulmuş oldu. 2005 itibarıyla, OpenSSH diğer işletim sistemlerinin büyük bir kısmıyla varsayılan olarak kurulu gelerek ve çok popüler olan SSH ile birleşerek tek uygulama oldu. Aynı zamanda OSSH ise artık kullanılmadı. OpenSSH'ın bakımı devam ediyor ve şimdi 1.x ve 2.0 sürümlerinin ikisini de destekliyor.

2006'da protokolün gözden geçirilmiş bir sürümü olan SSH-2 bir standart olarak kabul edildi. Bu sürüm SSH-1 ile bağdaşmayan bir sürümdü. SSH-2 güvenliği ve gelişmiş özellikleri SSH-1'in üzerindeydi. Artık daha iyi bir güvenliğe sahipti, örneğin Diffie-Helman anahtar değişimi ve mesaj üzerinden yetkilendirme kodları ile güçlü bir bütünlük kontrolü sağladı. SSH-2'nin yeni özelliği tek bir SSH bağlantısının üzerinde bir grup kabuk oturumu çalıştırmadır. SSH-2'nin üstünlüğü ve SSH-1'den fazla olan popülerliği nedeniyle bazı uygulamalar (Lsh ve Dropbear) sadece SSH-2 protokolünü destekler.

Kasım 2008'de, SSH'ın tüm sürümlerinde teorik bir güvenlik açığı fark edildi. Bu şifrelenmiş metnin bir bloğundan düz metnin 32 bit üzerinde bir düz metin dönüşümüne izin veren bir güvenlik açığıydı.

Bu durumda Standart OpenSSH yapılandırmasını kullanarak, saldırganların başarı olasılığı düz metnin 32 bitlik dönüşümü içindi. OpenSSH 5.2 ise bu tür güvenlik açıklarına karşı davranışları değiştirilmiş bir şekilde çıkarıldı.

SSH birçok platform için kullanılabilen bir protokoldür, bu platformlardan pek çoğu Unix türevleridir, bunun yanı sıra Microsoft Windows tarafından da kullanılır. Bazı uygulamalar SSH sunucu ya da istemcileri ile uyumlu ya da sadece SSH'da mevcut olan özelliklere ihtiyaç duyabilirler. Örneğin SSH VPN'i uygulamak için kullanılabilir ama şu an sadece OpenSSH sunucu ve istemcisinin uygulaması mevcuttur.