Dinamik olarak bağlı bir openssh ters tüneli için sunucuya ayrılan bağlantı noktası nasıl belirlenir?


16

OpenSSH'nin son sürümlerinde ters tüneller oluştururken, kullanılabilir herhangi bir bağlantı noktasını bağlamak için 0 uzak bağlantı noktası verilebilir:

-R [bind_address:] bağlantı noktası: host: hostport

...

Bağlantı noktası bağımsız değişkeni "0" ise, dinleme bağlantı noktası dinamik olarak sunucuya atanır ve çalışma zamanında istemciye bildirilir.

openssh ssh istemci sayfası

Benim sorum (otomatik bir şekilde) sunucuda bu bağlantı noktası ayırma nasıl belirleyebilirim. Ssh istemcisini çalıştıran ana bilgisayara bildirilmesi oldukça yararsız görünüyor - ancak istemcideki hizmetlere erişmek için bu bağlantı noktasına bağlantı yapmak isteyecek hedefe değil.

Düşünebileceğim iki benzer seçenek ya çalışıyor

# netstat -ntlp

ve 127.0.0.1'e bağlı sshd veya çıkışına bakarak şüpheli bağlantı noktalarını arayın.

# lsof -p $PPID | grep TCP | grep LISTEN

Ancak bunların hiçbiri otomasyon açısından hoş değildir ve birden fazla tünel oluşturulursa dinamik bağlantı noktalarını kaynak servis bağlantı noktasına geri bağlamanın bir yolu yoktur.

SSH_CONNECTION ortam değişkenine eşdeğer, ancak etkin tüneller için sshd sunucu tarafında etkin tünellerin (hem yerel hem de uzak bağlantı noktası numaraları) bir listesini almak için eksik olduğum bir şey var mı?

Bazı bağlamlar için, bir ana bilgisayara potansiyel olarak çok sayıda eşzamanlı ters tünel oluşturmaya çalışıyorum, birçok farklı ana bilgisayarda aynı bağlantı noktası numarasına geri tünelleme yapıyorum. TCP yığınının bağlantı noktası havuzunu otomatik olarak yönetmesi bunu yapmanın en etkili yolu gibi görünmektedir.


"-R 0: xxxx: y" sözdizimi kullanılırken, ssh "stderr üzerinde xxxx: y'ye uzaktan ileri alma için tahsis edilen
49488 numaralı

Evet, sorun bu bilgileri sunucu tarafına nasıl alacağımızdır - çok daha yararlı olacağı yer ...
kodlu yapı

Yanıtlar:


1

Sshd_config yapılandırma dosyasındaki 'LogLevel' değerini DEBUG1 (veya herhangi bir DEBUG düzeyi) olarak ayarlarsanız, sshd bağlantı noktası numaralarını /var/log/auth.log dosyasına kaydeder.

DEBUG veya daha yüksek bir LogLevel kullanmanın, çok fazla günlük kaydedildiğinden, gizlilik riski olabileceğini unutmayın.

(/var/log/auth.log sitesinden, alakalı bilgileri göstermek için birkaç satır kaldırıldı)

Jun 24 06:18:24 radon sshd[9334]: Connection from 192.168.13.10 port 39193
Jun 24 06:18:24 radon sshd[9334]: Accepted publickey for lornix from 192.168.13.10 port 39193 ssh2
Jun 24 06:18:24 radon sshd[9334]: pam_unix(sshd:session): session opened for user lornix by (uid=0)
Jun 24 06:18:24 radon sshd[9334]: User child is on pid 9339
Jun 24 06:18:24 radon sshd[9339]: debug1: Local forwarding listening on 0.0.0.0 port 0.
Jun 24 06:18:24 radon sshd[9339]: debug1: Allocated listen port 39813
Jun 24 06:18:24 radon sshd[9339]: debug1: channel 0: new [port listener]
Jun 24 06:18:24 radon sshd[9339]: debug1: Local forwarding listening on :: port 39813.
Jun 24 06:18:24 radon sshd[9339]: debug1: channel 1: new [port listener]
Jun 24 06:18:27 radon sshd[9339]: Received disconnect from 192.168.13.10: 11: disconnected by user

Bunu izlerseniz, bağlantı bilgilerini nerede ayrıştırabileceğinizi ve sonra yönlendirilen bağlantı noktasını görebilirsiniz (bu durumda 39813)

Bu komut satırını iki makinem arasında kullandım, ssh-key giriş ayarladım, bu yüzden şifre istemi veya gecikmesi yok

-xenon- lornix:~> ssh -R "*:0:radon:22" -N -T radon
Allocated port 39813 for remote forward to radon:22

-N komut verilmeyeceğini belirtir ve -T bu bağlantı için bir tty'nin tahsisini durdurur.

Bağlantı noktası bağlantı bilgilerini yaymanın başka bir yolu, bağlantıyı istemci tarafından ayrıştırmak ve bağlantı noktasını # ihtiyaç duyduğu yere taşımak için bir e-posta, jabber, metin msg, duman sinyalleri veya güvercin göndermek olacaktır.


0

sshHedef makinede bir sunucuya bağlantı açan ve makine adını / IP adresini / seri numarasını / bağlantı noktası numarasıyla birlikte bildiren bir programa bağlayabilirsiniz . Bunun gibi:

% ssh -R "*:0:radon:22" -N -T radon 2>&1 | sed "s/^/`uname -n` /" | netcat radon 3743
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.