Web tabanlı SSH - Web-based SSH

Web tabanlı SSH erişmeyi mümkün kılar Güvenli Kabuk (SSH) sunucuları standart aracılığıyla internet tarayıcıları. İlgili müşteriler tipik olarak JavaScript /Ajax veya JavaScript /WebSockets ve Ajax / WebSocket'ten SSH'ye proxy ile birlikte çalışırlarsa, SSH sunucularına bir arkasından erişmek için kullanılabilirler. güvenlik duvarı veya vekil Bu, HTTP trafiğine izin verir ancak SSH trafiğine izin vermez.

Teknoloji

Web tabanlı SSH istemcileri temel olarak aşağıdaki bölümlerden oluşur:

  • İstemci tarafı: Tipik JavaScript ve dinamik HTML sayfalar, tuş vuruşlarını yakalamak, sunucuya / sunucudan mesaj iletmek ve sonuçları kullanıcının internet tarayıcısı.
  • Sunucu tarafı / Web uygulaması: Gelen talepler, web uygulama sunucusu. Klavye olayları, bağlı olan ile iletişim kuran güvenli bir kabuk istemcisine iletilir. SSH sunucu. Terminal çıktısı ya istemciye iletilir ve burada HTML'ye dönüştürülür. JavaScript ya da tercüme edildi HTML istemciye iletilmeden önce sunucu tarafından.

İ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ı, yetenekleriyle sınırlı olmasıdır. JavaScript ve gelen karakter akışını işlemek için istemcinin CPU'sunun ve belleğinin önemsiz olmayan bir miktarını kullanır. Ayrıca, müşterinin terminal durumunu takip etmesine ve yanıt vermesine de güvenir. Kaçış dizileri.

İstemci tarafı terminal öykünücüsü örneği: vt100.js[1]

Sunucu tarafı terminal emülasyonu

Sunucu tarafı terminal öykünmesini kullanan web tabanlı SSH sunucuları tipik olarak terminal ekranını ve hafızadaki durumu izler 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 oturum (lar) ına farklı bir web tarayıcısından bağlansa bile, terminalin durumunun kalıcı olmasıdır. Ayrıca, kullanıcının bağlantısı kesilse bile sunucunun terminal çıkışına göre hareket etmesini sağlar.[2] Bu yöntemin dezavantajı, sunucuda daha fazla CPU ve bellek kullanmasıdır.

Sunucu tarafı terminal öykünücüsü örneği: terminal.py[3]

Avantajlar

Web tabanlı olmanın temel avantajları SSH şu şekilde özetlenebilir:

  • Ulaşılabilirlik: 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 esas alındığı için HTTP veya HTTPS SSH sunucularına bir arkasından erişmek de mümkündür. güvenlik duvarı veya vekil İnternet erişimini yalnızca 80 numaralı bağlantı noktalarına (HTTP ) veya 443 (HTTPS ).
  • Anonim Erişim: SSH erişimi bir aracı aracılığıyla tünellendiğinden web uygulama sunucusu aslında SSH sunucusu ile iletişim kuran bu sunucudur. Bu, SSH sunucusunun yalnızca IP adresi gerçek istemcinin IP adresini gizli tutarak web uygulama sunucusunun
  • Denetlenebilirlik: Çünkü istemci ile SSH sunucusu arasındaki tüm iletişim, web uygulama sunucusu bu iletişim 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: Çoğu web tabanlı SSH aracı, terminalleri diğer kullanıcılarla paylaşma, terminaller içinde görüntüleri gösterebilme 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: Emin olmak önemlidir HTTPS ile iletişim kurulurken kullanılır web uygulama sunucusu. Aksi takdirde, gönderilen tüm veriler basit kullanımla okunabilir paket koklayıcılar hassas bilgileri açığa çıkarabilir.
  • Güven: Web uygulama sunucusuna gönderilen verilerin şifresi burada çözülür. Verilen komutları gerçek komuta iletmek için bu gereklidir. SSH sunucu. Web tabanlı SSH çözümlerinin operatörleri genellikle hassas verileri kaydetmeseler de, veriler teorik olarak onlara düz biçimde sunulur. Bunun bir güvenlik sorununa neden olması olası değildir. web uygulama sunucusu ve SSH sunucusu aynı sunucuda çalıştırılır veya aynı varlık tarafından kontrol edilir.
  • Tünel açma: Çoğu geleneksel, uygulama tabanlı SSH istemcisinin aksine, web tabanlı SSH istemcileri tünel oluşturamaz ("ileri") TCP trafik. Örneğin, bir X web tabanlı bir SSH oturumu üzerinden oturum mümkün değildir. Bununla birlikte, yetenek eksikliği, uygulama sorunlarından kaynaklanmaktadır ve bir şekilde doğasında mevcut değildir.[4]

Ücretsiz ve açık kaynak örnekleri

  • Google'ın Chrome ve Chromium için Secure Shell uzantısı[5] JavaScript hterm terminal öykünücüsünü OpenSSH üzerinde çalışan istemci kodu Yerli Müşteri.[6] Secure Shell uzantısı, proxy kancaları ve üçüncü taraf uygulamaları aracılığıyla Google dışı HTTP-SSH proxy'leriyle çalışır Nassh röle[7] Secure Shell uzantısının üzerinden bir SSH bağlantısı kurmasını sağlamak için bu kancaları kullanabilir XMLHttpRequest veya WebSocket Ulaşım.
  • Shellinabox[8] tek başına bir hizmet olarak veya nginx sağlamak HTTPS bir oturum açma kabuğuna erişim ve aşağıdakiler için paketlenmiştir: Debian ve Kırmızı şapka türetilmiş Linux dağılımlar.
  • Webssh[9] Python'da yazılmış benzer bir çözümdür.
  • Bastillion[10] kendi kendine barındırılan, denetim ve anahtar yönetim yeteneklerine sahip web tabanlı bir kaledir. Kullanıcılar, merkezi bir sunucuya bağlanır. HTTPS ve SSH bağlantıları, güvenli bir WebSocket Ulaşım.
  • Bağlantı zaman aşımına sahip kesintili ağ bağlantıları nedeniyle.[11] Mosh MIT tarafından daha iyi bir çözüm olabilir[12] Önce SSH kullanır, sonra UDP oradan itibaren.[13]
  • FireSSH Firefox ESR ve Waterfox üzerinde çalışan bir tarayıcı eklentisidir.

Birinin terminal benzeri bir web sitesi yazmasına izin veren JavaScript kitaplıkları da vardır. Örnekler jQuery Terminali[14] ve XTerm.js.[15]

Referanslar