Memilih Antarmuka untuk Penerusan Port SSH

24

Saya memiliki server yang kami sebut hub-server.tld dengan tiga alamat IP 100.200.130.121, 100.200.130.122, dan 100.200.130.123. Saya memiliki tiga mesin berbeda yang ada di belakang firewall, tetapi saya ingin menggunakan SSH untuk memajukan satu mesin ke setiap alamat IP. Sebagai contoh: mesin-satu harus mendengarkan SSH pada port 22 pada 100.200.130.121, sedangkan mesin-dua harus melakukan hal yang sama pada 100.200.130.122, dan seterusnya untuk layanan berbeda pada port yang mungkin sama di semua mesin.

Halaman manual SSH telah -R [bind_address:]port:host:hostportmencantumkan I telah mengaktifkan port gateway, tetapi ketika menggunakan -Rdengan alamat IP tertentu, server masih mendengarkan port tersebut di semua antarmuka:

mesin-satu:

# ssh -NR 100.200.130.121:22:localhost:22 [email protected]

hub-server.tld (Mendengarkan SSH pada port 2222):

# netstat -tan | grep LISTEN
tcp        0      0 100.200.130.121:2222        0.0.0.0:*                   LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::80                       :::*                        LISTEN

Apakah ada cara untuk membuat SSH hanya meneruskan koneksi pada alamat IP tertentu ke mesin-satu sehingga saya dapat mendengarkan port 22 pada alamat IP lainnya pada saat yang sama, atau apakah saya harus melakukan sesuatu dengan iptables? Berikut ini semua baris dalam konfigurasi ssh saya yang bukan komentar / default:

Port 2222
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
ClientAliveInterval 30
ClientAliveCountMax 1000000
UseDNS no
Subsystem       sftp    /usr/libexec/openssh/sftp-server
Eric Pruitt
sumber

Jawaban:

37

Dari sshd_config(5):

GatewayPorts

  Specifies whether remote hosts are allowed to connect to ports forwarded 
  for the client.  By default, sshd(8) binds remote port forwardings to the
  loopback address. This prevents other remote hosts from connecting to 
  forwarded ports.  GatewayPorts can be used to specify that sshd should 
  allow remote port forwardings to bind to non-loopback addresses, thus 
  allowing other hosts to connect.  The argument may be “no” to force remote 
  port forwardings to be available to the local host only, “yes” to force 
  remote port forwardings to bind to the wildcard address, or 
  “clientspecified” to allow the client to select the address to which the 
  forwarding is bound.  The default is “no”.

Anda ingin mengatur ini clientspecifiedsebagai ganti yes.

Mgorven
sumber
Luarbiasa, terimakasih! Saya sangat berharap halaman manual untuk ssh (1) menyatakan bahwa clientspecifieddiperlukan daripada hanya mengatakan "diaktifkan": "Menentukan bind_address jarak jauh hanya akan berhasil jika opsi GatewayPorts server diaktifkan (lihat sshd_config (5))". Dari itu, saya pikir itu hanya perlu diatur yes.
Eric Pruitt