Çoğu Linux kullanıcısı için, bir SSH istemcisi aracılığıyla uzak sunuculara bağlanmanın geleneksel yaklaşımı her zaman bir komut satırı ortamı aracılığıyla olmuştur. Ancak WebSSH, Python’da yazılmış ve xterm.js, paramiko ve tornado’ya dayalı, kullanımı kolay bir web arabirimi sağlayarak istemciden sunucuya SSH bağlantısını basitleştirir.
WebSSH Özellikleri
- Chrome, Edge, Firefox, Opera ve Safari gibi modern tarayıcıları destekler.
- Yeniden boyutlandırılabilir bir terminal Penceresi uygular.
- Hedef SSH sunucusunun varsayılan kodlaması otomatik olarak algılanır.
- Tam ekran terminali destekler.
- İki Faktörlü Kimlik Doğrulamayı destekler.
- Şifreli anahtarları destekler.
- DSA RSA ECDSA Ed25519 anahtarlarının dahil edilmesiyle SSH ortak anahtar kimlik doğrulamasını destekler.
- Boş parolaların eklenmesiyle SSH parola doğrulamasını destekler.
Adım 1 – WebSSH Bağımlılıklarının Kurulması (Python ve PIP)
Python, WebSSH’yi kurmadan ve kullanmadan önce büyük bir gereksinim olduğundan, sisteminizde kurulu olduğundan emin olmanız gerekir.
$ sudo apt install python3 [On Debian, Ubuntu and Mint] $ sudo yum install python3 [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a dev-lang/python [On Gentoo Linux] $ sudo apk add python3 [On Alpine Linux] $ sudo pacman -S python3 [On Arch Linux] $ sudo zypper install python3 [On OpenSUSE]
Ardından, sisteme Python modüllerini ve kitaplıklarını kurmak için kullanılan Python PIP’yi kurmanız gerekiyor.
$ sudo apt install python3 [On Debian, Ubuntu and Mint] $ sudo yum install python3 [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a dev-lang/python [On Gentoo Linux] $ sudo apk add python3 [On Alpine Linux] $ sudo pacman -S python3 [On Arch Linux] $ sudo zypper install python3 [On OpenSUSE]
Kurulduktan sonra aşağıdaki komutları kullanarak Python ve PIP sürümlerini onaylayabilirsiniz.
$ python3 -V $ pip --version
Adım 2 – Linux’ta WebSSH Kurulumu
Sisteminizde Python ve Python PIP kuruluyken, sonunda WebSSH’yi kurabiliriz:
$ pip3 install webssh
Yüklü WebSSH sürümünü aşağıdakileri çalıştırarak onaylayın:
$ wssh --version 1.6.0
Adım 3 – WebSSH Kullanarak Web Tarayıcısından Linux Terminaline Bağlanma
WebSSH’yi yerel bir sisteme yüklediyseniz, aşağıdaki komutu çalıştırarak WebSSH’yi başlatabilirsiniz.
$ wssh
WebSSH’yi uzak bir Linux sistemine kurduysanız, aşağıdaki komuta, varsayılan olarak güvenli olmayan HTTP protokolü üzerinden uzak bağlantılara izin verecek ek bir parametre eklemeniz gerekir, bu nedenle HTTPS’yi etkinleştirerek güvenli hale getirmeniz gerekir, makalede daha sonra tartışıldığı gibi.
$ wssh --fbidhttp=False
Yukarıdaki ekran görüntüsünde gösterildiği gibi, güvenlik duvarınızda izin verilmesi gereken bağlantı noktası 8888’i kullanacağız.
$ sudo ufw allow 8888 veya $ sudo firewall-cmd --zone=public --add-port=8888/tcp
Web Tarayıcınızda, gösterildiği gibi normal SSH kimlik bilgilerini sağlayarak WebSSH’ye bağlanmak için aşağıdaki adrese gidin.
http://127.0.0.1:8888 veya http://your_domain:8888
Anahtar tabanlı kimlik doğrulama için, genellikle ~/.ssh klasöründe bulunan SSH anahtar dosyanızı yükleyin. Dosyayı yüklemeden önce gizli dosyaları ve dizinleri göstermek için Ctrl+h klavye kısayolunu kullanın.
Uzak makinenize başarıyla bağlandıktan sonra, aşağıdaki tarayıcı arayüzü ile karşılaşacaksınız:
Adım 4 – WebSSH’nin SSL Sertifikası ile Güvenliğini Sağlama
Bu adım, kayıtlı bir etki alanı adınız ve etkin bir LetsEncrypt SSL Sertifikanız olduğunu varsayar. Alan adınızla ilişkili SSL sertifikaları, dizin konumunda olmalıdır:
/etc/letsencrypt/live/your_domain_name
Bu dizindeki sertifika dosyalarınız bir .pem dosya uzantısına sahip olacaktır, örneğin fullchain.pem ve privkey.pem.
WebSSH’nin HTTPS desteği ile çalışması için sertifika dosyasına (fullchain.pem) ve anahtar dosyasına (privkey.pem) giden yol sağlanmalıdır.
İlk olarak, güvenlik duvarınızın WebSSH tarafından HTTPS erişimi için kullanılan 4433 numaralı bağlantı noktasına izin verdiğinden emin olun:
$ sudo ufw allow 4433 veya $ sudo firewall-cmd --zone=public --add-port=4433/tcp
Buradan, WebSSH sunucusunu etki alanı adı sertifikasına ve anahtar dosyalarına yönlendirerek başlatın:
$ sudo wssh --certfile='/etc/letsencrypt/live/your_domain_name/fullchain.pem' --keyfile='/etc/letsencrypt/live/your_domain_name/privkey.pem'
WebSSH web tarayıcı arayüzüne HTTPS aracılığıyla erişmek için şunları uygulayın:
https://127.0.0.1:4433 veya https://your_domain:4433
Adım 5 – WebSSH’yi Nginx Ters Proxy Arkasında Çalıştırma
Bu adımda, WebSSH’ye yapılan kullanıcı istekleri Nginx (Ters Proxy) tarafından işlenecektir, bunun çalışması için Nginx’i bir ters proxy olarak yüklemeniz ve yapılandırmanız gerekir.
$ sudo apt install nginx [On Debian, Ubuntu and Mint] $ sudo yum install nginx [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a www-servers/nginx [On Gentoo Linux] $ sudo apk add nginx [On Alpine Linux] $ sudo pacman -S nginx [On Arch Linux] $ sudo zypper install nginx [On OpenSUSE]
Ardından, Nginx’in güvenlik duvarınızdaki 80 ve 443 numaralı bağlantı noktalarına erişmesine izin verin.
$ sudo ufw allow “Nginx Full” veya $ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp $ sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
WebSSH için Nginx yapılandırması oluşturun:
$ sudo nano /etc/nginx/sites-available/webssh
Aşağıdaki bilgileri yapıştırın ve alan_adınız_adı, gerçek alan adınızla değiştirin:
server { listen 80 default_server; listen [::]:80 default_server; server_name your_domain_name www.your_domain_name root /var/www/html; access_log /var/log/nginx/webssh.access.log; error_log /var/log/nginx/webssh.error.log; location / { proxy_pass http://127.0.0.1:8888; proxy_http_version 1.1; proxy_read_timeout 300; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; } listen 443 ssl; # RSA certificate ssl_certificate /etc/letsencrypt/live/your_domain_name/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your_domain_name/privkey.pem; # For Redirecting non-https traffic to https if ($scheme != "https") { return 301 https://$host$request_uri; } }
webssh yapılandırma dosyasını etkinleştirin:
$ sudo ln -s /etc/nginx/sites-available/webssh /etc/nginx/sites-enabled/webssh
Yeni oluşturulan Nginx WebSSH yapılandırma dosyasıyla çakışmaları önlemek için Nginx varsayılan yapılandırma dosyasını kaldırın:
$ sudo rm /etc/nginx/sites-enabled/default
Nginx yapılandırmasını doğrulayın:
$ sudo nginx -t
Nginx tüm trafiği yöneteceğinden, güvenlik duvarı kurallarınızdan 8888 ve 4433 bağlantı noktalarını da kaldırabilirsiniz.
Sertifika ve anahtar dosyalarının yollarını belirtmeden WebSSH’yi yeniden başlatın.
$ wssh
Buradan, artık bir bağlantı noktası belirtmeden web tarayıcınızdan alan adınıza doğrudan erişebilirsiniz.
https://your_domain_name
Adım 6 – WebSSH Systemd Dosyası Oluşturma
Şu ana kadar wssh sunucusunu bir komut satırı ortamı kullanarak sistemden başlatmak dışında tüm adımları otomatikleştirdik. Bu adımı otomatikleştirmek için bir arka plan hizmeti kurmamız gerekiyor.
Bir birim dosyası oluşturup wssh sunucusunu Ctrl+C klavye tuşları ile hala çalışıyorsa kapatmamız gerekiyor.
Create a WebSSH service file:
$ sudo nano /etc/systemd/system/webssh.service
Dosyaya şunları ekleyin:
[Unit] Description=WebSSH terminal interface After=network.target [Service] User=www-data Group=www-data ExecStart=wssh [Install] WantedBy=multi-user.target
[Service] altındaki ExecStart değeri aşağıdakiler çalıştırılarak bulunabilir:
$ whereis wssh wssh: /home/linuxbrew/.linuxbrew/bin/wssh
Yukarıdaki durumda, değer girişi şöyle olacaktır:
[Service] User=www-data Group=www-data ExecStart=/home/linuxbrew/.linuxbrew/bin/wssh
Artık aşağıdaki komutlarla WebSSH’yi başlatabilir ve etkinleştirebiliriz:
$ sudo systemctl start webssh $ sudo systemctl enable webssh $ sudo systemctl status webssh
Alan adı URL’nizi (http://alan_adiniz_adınız) her yeniden yüklediğinizde, arka planda WebSSH ve Nginx’in çalıştığı yeni bir WebSSH oturumu kullanabileceksiniz.
WebSSH, uzak makinelerinize modern ve güvenli bir Web Tarayıcısının rahatlığından erişmenizi ve yönetmenizi esnek bir şekilde kolaylaştırır.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.