Chọn giao diện để chuyển tiếp cổng SSH


24

Tôi có một máy chủ sẽ gọi hub-server.tld với ba địa chỉ IP 100.200.130.121, 100.200.130.122 và 100.200.130.123. Tôi có ba máy khác nhau nằm sau tường lửa, nhưng tôi muốn sử dụng SSH để chuyển tiếp một máy tới từng địa chỉ IP. Ví dụ: machine-one nên lắng nghe SSH trên cổng 22 trên 100.200.130.121, trong khi máy hai nên làm tương tự trên 100.200.130.122, v.v. đối với các dịch vụ khác nhau trên các cổng có thể giống nhau trên tất cả các máy.

Trang người dùng SSH đã -R [bind_address:]port:host:hostportliệt kê tôi đã bật các cổng cổng, nhưng khi sử dụng -Rvới một địa chỉ IP cụ thể, máy chủ vẫn lắng nghe trên cổng trên tất cả các giao diện:

máy một:

# ssh -NR 100.200.130.121:22:localhost:22 root@hub-server.tld

hub-server.tld (Nghe SSH trên cổng 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

Có cách nào để làm cho SSH chỉ chuyển tiếp kết nối trên một địa chỉ IP cụ thể sang máy không để tôi có thể nghe cổng 22 trên các địa chỉ IP khác cùng một lúc, hoặc tôi sẽ phải làm gì đó với iptables? Dưới đây là tất cả các dòng trong cấu hình ssh của tôi không phải là nhận xét / mặc định:

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

Câu trả lời:


37

Từ sshd_config(5):

Cổng kết nối

  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”.

Bạn muốn đặt cái này clientspecifiedthay vì yes.


Tuyệt vời, cảm ơn bạn! Tôi thực sự muốn trang man cho ssh (1) nói rằng clientspecifiedcần thiết thay vì chỉ nói "enable": "Chỉ định một bind_address từ xa sẽ chỉ thành công nếu tùy chọn GatewayPorts của máy chủ được bật (xem sshd_config (5))". Từ đó, tôi nghĩ rằng nó chỉ cần được thiết lập yes.
Eric Pruitt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.