İki makinem var, İstemci ve Sunucu.
(Bir şirket güvenlik duvarının arkasında olan) istemci, şu komutu kullanarak herkese açık bir IP adresi olan Sunucuya ters bir SSH tüneli açar:
ssh -nNT -R0: localhost: 2222 insecure@server.example.com
OpenSSH 5.3 ve 0
sonraki sürümlerinde, -R
açıkça bir tane çağırmak yerine "kullanılabilir bir bağlantı noktası seç" anlamına gelir. Bunu yapmamın nedeni zaten kullanımda olan bir port seçmek istememem. Aslında, benzer tüneller kurması gereken birçok müşteri var.
Bu noktada sorun, sunucunun hangi istemcinin hangisi olduğunu bilmemesidir. Bu İstemcilerden birine (localhost aracılığıyla) tekrar bağlanmak istiyorsak, hangi portun hangi istemciye başvurduğunu nasıl bilebiliriz?
Yukarıdaki şekilde kullanıldığında ssh'ın bağlantı noktası numarasını komut satırına bildirdiğinin farkındayım. Ancak, oturumları canlı tutmak için autossh kullanmak istiyorum. autossh, muhtemelen ssh komutunun çıktısının eterde kaybolması için alt sürecini fork / exec ile çalıştırır.
Ayrıca, uzak bağlantı noktasını İstemciden almanın başka bir yolunu da düşünemiyorum. Bu nedenle, sunucuda bu bağlantı noktasını belirlemenin bir yolu olup olmadığını merak ediyorum.
Bir fikrim bir şekilde / etc / sshrc kullanmaktır, ki bu sözde her bağlantı için çalışan bir betiktir. Bununla birlikte, burada ilgili bilgileri nasıl alacağını bilmiyorum (belki de bu bağlantıyı işleyen belirli sshd işleminin PID'si?) Bazı işaretçileri çok isterim.
Teşekkürler!