Belgeler
Hızlı başlangıç + her bölüm ve her cihaz için işlev açıklamaları (sürekli güncelleniyor)
SSH Everywhere Mimarisi ve Teknoloji Yığını
> Bu belge, SSH Everywhere'in genel mimarisini, kullandığı protokolleri ve teknoloji yığınını anlaşılır bir dille açıklar. "Bu şey aslında nasıl çalışıyor?" sorusuna yanıt arayan okurlar içindir; teknik bilgi gerekmez.
---
Tüm projeyi tek cümlede anlamak
SSH Everywhere, 1Panel / Baota ile karşılaştırılabilecek hepsi bir arada sunucu/cihaz uzaktan yönetim panelidir. Temel yeteneği şudur: Cihazınız ağın neresinde olursa olsun — genel IP'si olsun, olmasın (NAT arkasında) ya da bir Android telefon olsun — hepsini tek bir panelden SSH kullanır gibi yönetebilirsiniz.
Panelin kendisi genel IP'li bir sunucuya kurulur (0.0.0.0:5501 dinler). Panele tarayıcıdan erişirsiniz; panel de farklı "bağlantı yöntemleri" üzerinden her hedef cihaza ulaşır.
---
Genel mimari (tek şemayla anlayın)
┌─────────────────────────────────────────────────────────────┐
│ Tarayıcı ön yüzü (tek sayfa uygulaması, masaüstü OS taklidi) │
│ Masaüstü pencereleri · Görev çubuğu · Başlat menüsü · Kart gösterge paneli │
│ · Gerçek terminal · Simge kitaplığı · Saf yerel JS (çerçeve yok) │
└──────────────────────────┬──────────────────────────────────┘
│ HTTP REST + SocketIO
┌──────────────────────────┴──────────────────────────────────┐
│ Panel arka ucu (Flask + Flask-SocketIO, Python) │
│ Ana program · Ters tünel sunucusu · SocketIO sunucusu · Dosya aktarımı │
│ Çökme önleme · Site yönetimi · Yedekleme · SQLite veritabanı │
└───┬───────────────┬──────────────────┬──────────────────────┘
│ SSH │ Ters tünel │ SocketIO
│ doğrudan/tünel ile │ (0.0.0.0:4433) │ (HTTP üzerinden)
▼ ▼ ▼
┌────────┐ ┌──────────────┐ ┌─────────────────┐
│ Genel IP'li │ │ Genel IP'siz Linux │ │ Android telefon │
│ sunucu │ │ /NAS/Raspberry Pi │ │ (Termux) │
└────────┘ └──────────────┘ └─────────────────┘
---
Dört bağlantı yöntemi (protokoller)
SSH Everywhere dahili olarak 4 protokol kullanır; her birinin kendi görevi ve hedeflediği cihaz türü vardır:
1. SSH — ana kanal
Kullanım amacı: tüm "sıradan Linux sunucularını" yönetmenin temel işlevi.
- Sistem yönetimi (genel bakış, süreçler, Zamanlanmış görevler, Güvenlik duvarı, Docker, Site yönetimi, imaj kaynakları, Çökme önleme)
- Terminal (etkileşimli shell)
- Dosya yönetimi (yükleme/indirme/düzenleme/sıkıştırma)
- Sağlık kontrolü (CPU/bellek/disk/sıcaklık)
- Komut çalıştırma
Bağlantı yöntemi:
- Genel IP varsa: panel doğrudan
host:portadresine bağlanır - Genel IP yoksa: panel önce ters tünel üzerinden yerel bir proxy portu oluşturur, sonra SSH ile bağlanır
> Başka bir deyişle, ters tünelin özü "SSH'ı genel IP'si olmayan cihaza ulaştırmaktır"; bu yüzden cihaza en son inen protokol SSH'tır.
2. Ters tünel protokolü — tünelleme kanalı
Kullanım amacı: "genel IP'si olmayan cihazların" panele erişebilmesini sağlar. Cihaz tarafı panele aktif olarak "dışarı bağlanır" ve ters yönlü bir TCP uzun bağlantısı kurar; panel bu tünel üzerinden komut gönderir ve port yönlendirir.
Özellikler: TCP uzun bağlantı + şifreleme (AES-256-GCM), sunucu 0.0.0.0:4433 dinler.
Tipik senaryolar:
- Genel IP'siz Linux sunucuların SSH ile tünelleme yönetimi (SSH tünelin içinde çalışır)
- Port tünelleme: cihazdaki bir servis portunu (örn.
8090) panelin genel portuna eşlemek
> Karıştırılan kavramlar: Port yönlendirme - Port tünelleme
>
> | | Port yönlendirme | Port tünelleme |
> |---|---|---|
> | Uygun cihaz | genel IP'li sunucular | genel IP'siz tünel cihazları |
> | Uygulama biçimi | sistem güvenlik duvarı DNAT, hedef sunucunun kendisinde | ters tünel üzerinden |
> | Veri akışı | ziyaretçi → hedef genel IP → hedef port | ziyaretçi → panel genel portu → ters tünel → cihaz portu |
> | Cihazın çevrimiçi olmasına bağımlılık | gerekmez | gerekir (cihaz Agent'ı çevrimiçi tutmalı) |
>
> Tek cümleyle: "Yönlendirme" genel IP'li sunucular için; "Tünelleme" genel IP'si olmayan cihazlar için.
3. SocketIO — Android telefonlara özel kanal
Kullanım amacı: Android telefonlardaki Termux'u yönetmek. Telefonun mobil ağ NAT'ı sık değişir ve SSH kararsızdır; bu yüzden kararlı SocketIO uzun yoklama kanalı kullanılır (gerçek cihazda doğrulanmış olgun çözüm).
Telefonda çalışan Agent SocketIO üzerinden şunları sunar:
- Sistem yönetimi (genel bakış/süreçler/Zamanlanmış görevler)
- Terminal (PTY köprüsü)
- Dosya yönetimi
- Sağlık izleme (her 30 saniyede bildirir: yük/bellek/disk/pil/sıcaklık)
> Bu, projedeki "SSH kullanmayan" tek kanaldır — çünkü Android telefonlar sshd kullanmaz, bunun yerine SocketIO uzun bağlantısıyla çalışır.
4. HTTP REST — ön yüz ile arka uç arasında
Tarayıcı ön yüzü, panel arka ucunu REST API üzerinden çağırır; aynı zamanda terminal gibi gerçek zamanlı çift yönlü iletişim için SocketIO kullanır.
---
Üç cihaz türüne erişim yollarına genel bakış
| Cihaz türü | Bağlantı yöntemi | En son inen protokol | Açıklama |
|---|---|---|---|
| Genel IP'li Linux sunucusu | panel doğrudan bağlanır | SSH | en doğrudan senaryo |
| Genel IP'siz Linux sunucusu (NAS/Raspberry Pi vb.) | ters tünel proxy → SSH | SSH (tünelden taşınır) | tünel, SSH'ın "taşıyıcısıdır" |
| Android telefon (Termux) | SocketIO uzun yoklama | SocketIO (SSH kullanmayan tek kanal) | telefonlara özel kararlı kanal |
---
Veri depolama
- SQLite veritabanı (
data/ssheverywhere.db): sunucu kartları, port yönlendirme, tünelleme kayıtları, kullanıcılar, görevler vb. - Dosya sistemi: yedek dosyaları, tünel anahtarları, statik kaynaklar.
---
Kurulum biçimi
- Panel: systemd servisi
ssh-everywhere.service,0.0.0.0:5501dinler. - Ters tünel:
0.0.0.0:4433dinler. - Hedef cihazdaki Agent servis olarak sürekli çalışır (Linux'ta systemd / Termux'ta termux-services).
---
Proje adı "SSH Everywhere" hakkında
Projenin adı SSH Everywhere, anlamı "SSH gibi, her yerde yönetilebilir". SSH, projenin tartışmasız en ana bağlantı yöntemidir: Android telefon alt senaryosu dışındaki tüm işlevler (Linux sunucu yönetimi, tünelleme, dosya aktarımı, sağlık kontrolü) sonunda SSH üzerine iner. Ters tünelin özü de tam olarak "SSH'ı her yere ulaştırmaktır". Bu nedenle "SSH Everywhere" adı projenin temel yeteneğini doğru biçimde ifade eder.