Web tabanlı SSH - Web-based SSH
Web tabanlı SSH , Secure Shell (SSH) sunucularına standart web tarayıcıları üzerinden erişmeyi mümkün kılar . İlgili istemciler tipik olarak JavaScript / Ajax veya JavaScript / WebSockets tabanlıdır ve bir Ajax / WebSocket-SSH proxy'si ile birlikte çalışırlarsa, SSH sunucularına HTTP trafiğine izin veren bir güvenlik duvarının veya proxy'nin arkasından erişmek için kullanılabilirler. SSH trafiğine izin verme.
Teknoloji
Web tabanlı SSH istemcileri temelde aşağıdaki bölümlerden oluşur:
- İstemci tarafı : Tipik olarak JavaScript ve dinamik HTML sayfaları, tuş vuruşlarını yakalamak, sunucuya / sunucudan mesaj iletmek ve sonuçları kullanıcının web tarayıcısında görüntülemek için kullanılır .
- Sunucu tarafı / Web uygulaması : Gelen istekler web uygulama sunucusunda işlenir . Klavye olayları, bağlı SSH sunucusuyla iletişim kuran güvenli bir kabuk istemcisine iletilir . Terminal çıktısı ya istemciye iletilir ve burada JavaScript aracılığıyla HTML'ye dönüştürülür ya da istemciye iletilmeden önce sunucu tarafından HTML'ye çevrilir .
İstemci tarafı terminal emülasyonu
İstemci tarafı terminal öykünmesini kullanan web tabanlı SSH sunucuları, genellikle ham terminal çıktısını SSH sunucusundan doğrudan istemciye iletir. Bu, uçbirim çıktısını istemciye HTML'ye çevirme sürecini boşaltma avantajına sahiptir. Bu yöntemin dezavantajı, JavaScript'in yetenekleriyle sınırlı olması ve gelen karakter akışını işlemek için istemcinin CPU'sunun ve belleğinin önemsiz olmayan bir miktarını kullanmasıdır. Ayrıca, istemcinin terminal durumunu takip etmesine ve kaçış dizilerine yanıt vermesine de güvenir .
İstemci tarafı terminal öykünücüsü örneği: vt100.js
Sunucu tarafı terminal emülasyonu
Sunucu tarafı terminal öykünmesini kullanan web tabanlı SSH sunucuları tipik olarak terminal ekranını ve hafızadaki durumu takip eder ve bir ekran güncellemesi gerçekleştiğinde veya istemci açıkça bir güncelleme istediğinde bunu HTML'ye dönüştürür. Bu yöntemin avantajı, kullanıcı mevcut oturumlarına farklı bir web tarayıcısından bağlansa bile terminalin durumunun kalıcı kalmasıdır. Ayrıca, kullanıcının bağlantısı kesilse bile sunucunun terminal çıkışına göre hareket etmesini sağlar. Bu yöntemin dezavantajı, sunucuda daha fazla CPU ve bellek kullanmasıdır.
Sunucu tarafı terminal öykünücüsü örneği: terminal.py
Avantajları
Web tabanlı SSH'nin başlıca avantajları şu şekilde özetlenebilir:
- Erişilebilirlik : Bu makalede açıklanan Web tabanlı SSH, istemci yazılımının yerel kurulumunu gerektirmez. Böylece SSH sunucularına herhangi bir yerden bir web tarayıcısı üzerinden erişmek mümkündür. İletişim HTTP veya HTTPS'ye dayandığından, SSH sunucularına, İnternet erişimini yalnızca 80 ( HTTP ) veya 443 ( HTTPS ) bağlantı noktalarına kısıtlayan bir güvenlik duvarının veya proxy'nin arkasından erişmek de mümkündür .
- Anonim Erişim : SSH erişimi, bir aracı web uygulama sunucusu aracılığıyla tünellendiğinden , SSH sunucusu ile fiilen iletişim kuran bu sunucudur. Bu, SSH sunucusunun yalnızca web uygulama sunucusunun IP adresinden haberdar olacağı ve gerçek istemcinin IP adresini gizli tutacağı anlamına gelir .
- Denetlenebilirlik : İstemci ile SSH sunucusu arasındaki tüm iletişimin web uygulama sunucusundan geçmesi gerektiğinden, bu iletişim günlüğe kaydedilebilir. Bu, kötü niyetli bir istemcinin etkinliklerinin günlüklerini silmesini önler. Durum, geleneksel SSH sunucusuyla tamamen aynıdır.
- Oturumları Devam Ettirme : Bazı web tabanlı SSH uygulamaları, kullanıcının bağlantı kesildikten sonra SSH oturumlarına devam etmesine izin verir. Bu, geleneksel bir SSH istemcisi ile mümkün değildir.
- Gömülebilir : Web tabanlı SSH uygulamaları, diğer web tabanlı uygulamalara entegre edilmelerine olanak tanıyan herhangi bir web sayfasına gömülebilir.
- Benzersiz Özellikler : Birçok web tabanlı SSH aracı, terminalleri diğer kullanıcılarla paylaşma, terminaller içinde görüntüleri görüntüleyebilme ve diğer kullanışlı yetenekler gibi benzersiz özelliklere sahiptir.
Önemli konular
Web tabanlı bir SSH istemcisi kullanırken aşağıdaki konular dikkate alınmalıdır ve önemlidir:
- Güvenlik : Web uygulama sunucusuyla iletişim kurarken HTTPS'nin kullanıldığından emin olmak önemlidir . Aksi takdirde, gönderilen tüm veriler, hassas bilgileri açığa çıkarabilecek basit paket yoklayıcılar kullanılarak okunabilir olacaktır .
- Güven : Web uygulama sunucusuna gönderilen verilerin şifresi burada çözülür. Bu, verilen komutları gerçek SSH sunucusuna iletmek için gereklidir . Web tabanlı SSH çözümlerinin operatörleri genellikle hassas verileri kaydetmeseler de, veriler teorik olarak düz biçimde onlar için kullanılabilir. Web uygulama sunucusu ve SSH sunucusu aynı sunucuda çalıştırıldığında veya aynı varlık tarafından kontrol edildiğinde bunun bir güvenlik sorununa neden olması olası değildir .
- Tünelleme : Çoğu geleneksel, uygulama tabanlı SSH istemcisinin aksine, web tabanlı SSH istemcileri TCP trafiğini tünelleyemez ("iletebilir") . Örneğin, web tabanlı bir SSH oturumu üzerinden bir X oturumu çalıştırmak mümkün değildir. Bununla birlikte, yetenek eksikliği, uygulama sorunlarından kaynaklanmaktadır ve bir şekilde doğası gereği yoktur.
Ücretsiz ve açık kaynak örnekleri
- Google'ın Chrome ve Chromium için Secure Shell uzantısı , JavaScript hterm terminal emülatörünü Native Client üzerinde çalışan OpenSSH istemci koduyla eşleştirir . Secure Shell uzantısı, proxy kancaları aracılığıyla Google dışı HTTP-SSH proxy'leriyle çalışır ve üçüncü taraf uygulama nassh-relay , Secure Shell uzantısının XMLHttpRequest veya WebSocket aktarımı üzerinden bir SSH bağlantısı kurmasını sağlamak için bu kancaları kullanabilir .
- shellinabox , oturum açma kabuğuna HTTPS erişimi sağlamak için bağımsız bir hizmet olarak veya nginx ile birlikte çalışır ve Debian ve RedHat kaynaklı Linux dağıtımları için paketlenmiştir .
- webssh , Python'da yazılmış benzer bir çözümdür.
- Bastillion , denetim ve anahtar yönetim yeteneklerine sahip, kendi kendine barındırılan, web tabanlı bir kaledir. Kullanıcılar merkezi bir sunucuya HTTPS üzerinden bağlanır ve SSH bağlantılarının proxy'si güvenli bir WebSocket aktarımı aracılığıyla gerçekleştirilir .
- FireSSH , Firefox ESR ve Waterfox üzerinde çalışan bir tarayıcı eklentisidir.
Referanslar
- ^ http://code.google.com/p/shellinabox/source/browse/demo/vt100.js
- ^ Gate One'ın termio.py modülünden beklenen işlev , kullanıcının bağlantısı kesilmiş olsa bile terminal çıkışına göre hareket edebilir.
- ^ https://liftoff.github.io/GateOne/Developer/terminal.html
- ^ jcterm , X11 yönlendirme gibi bağlantı noktası yönlendirmeyi işleyebileceğini iddia ediyor
- ^ https://chrome.google.com/webstore/detail/pnhechapfaindjhompbnflcldabbghjo
- ^ Chromium Secure Shell SSS
- ^ nassh-röle GitHub deposu
- ^ https://github.com/shellinabox/shellinabox
- ^ https://pypi.org/project/webssh/
- ^ Bastillion - Web Tabanlı SSH Erişimi ve Anahtar Yönetimi