youatwork@officepc$ autossh -R 12345:localhost:22 notroot@serverpc
Sonra:
you@homepc$ autossh -L 23456:localhost:12345 notroot@serverpc
you@homepc$ ssh youatwork@localhost -p 23456
Yapabilecekleriniz şuydu: 1. adımda, ofis PC'den sunucuya uzak bir bağlantı noktası iletin ( 12345
örnek olarak kullanılırsa,> 1024 herhangi bir bağlantı noktası yapmalıdır). Şimdi sunucuda 12345'e bağlanma sizi officepc'deki 22 numaralı bağlantı noktasına bağlamalıdır.
2. adımda, 23456 numaralı bağlantı noktasını ev makinenizden sunucuda 12345'e iletin (bu nedenle 1. adımda ayarlandığı gibi resmi program: 22'ye iletilir)
3. adımda, ofis PC giriş bilgilerinizle yerel 23456 numaralı bağlantı noktasına bağlanırsınız . Bu, 2. adımda sunucunuzdaki 12345 numaralı bağlantı noktasına ve 1. adımda ofis PC'nize iletilir.
Aktarımlar için otomatik olarak kullandığımı, bağlantının kesilmesi durumunda tüneli otomatik olarak yeniden bağlayan bir ssh sarmalayıcısı olduğunu unutmayın; ancak normal ssh, bağlantı kopmadığı sürece de işe yarayacaktır.
Olası bir güvenlik açığı vardır: serverpc üzerindeki localhost: 12345 ile bağlantı kurabilen herkes şimdi officepc: 22'ye bağlanabilir ve bunu hacklemeye çalışabilir. (Not Bir SSH sunucusuna çalıştırıyorsanız, zaten varsayılan olarak açık olan temel korumaları yukarıda sabitleyin gerektiğini; - örneğin bkz ben root giriş devre dışı bırakma ve şifre doğrulaması devre dışı bırakılması en azından tavsiye bu )
Düzenleme : Bunu aynı yapılandırma ile doğruladım ve işe yarıyor. GatewayPorts no
yerel tünelleri değil yalnızca dünyaya açık olan limanları etkiler. İletilen bağlantı noktaları budur:
homepc:
outgoing ssh to serverpc:22
listening localhost:23456 forwarded through ssh tunnel
serverpc:
listening ssh at *:22
incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
outgoing ssh to serverpc:22
incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22
Yani, bildiğim kadarıyla ağ yığını söz konusu olduğunda, bu, ilgili döngü arayüzleri (artı ssh bağlantılarında bölgenin trafik var etmek serverpc); bu nedenle GatewayPorts
hiç kontrol edilmedi.
Bununla birlikte, yönerge vardır AllowTcpForwarding
: öyleyse no
, bu kurulum geridönüşüm arayüzünde bile değil, hiçbir yönlendirme yapılmasına izin vermediğinden başarısız olur.
Uyarılar :
autossh ve en son ssh kullanıyorsanız, ssh kullanmak ServerAliveInterval
ve ServerAliveCountMax
tüneli açık tutmak isteyebilirsiniz . Autossh'un yerleşik bir kontrolü var, ancak görünüşte Fedora'da bazı sorunları var. -M0
bunu devre dışı bırakır ve -oServerAliveInterval=20 -oServerAliveCountMax=3
bağlantının kurulup kurulmadığını kontrol eder - her 20 saniyede bir çalışır, arka arkaya 3x başarısız olursa, ssh'yi durdurur (ve autossh yeni bir tane yapar):
autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
ileri başarısız olursa ssh tünelini yeniden başlatmak faydalı olabilir -oExitOnForwardFailure=yes
- eğer bağlantı noktası zaten bağlıysa, çalışan bir SSH bağlantısı elde edebilirsiniz, ancak iletilen tünel yoktur.
kullanarak ~/.ssh/config
seçenekler (ve limanların) için başka komut satırları çok ayrıntılı olsun, tavsiye edilir. Örneğin:
Host fwdserverpc
Hostname serverpc
User notroot
ServerAliveInterval 20
ServerAliveCountMax 3
ExitOnForwardFailure yes
LocalForward 23456 localhost:12345
Sonra sadece sunucu takma adını kullanabilirsiniz:
autossh -M0 fwdserverpc