Mam serwer, który nazwiemy hub-server.tld z trzema adresami IP 100.200.130.121, 100.200.130.122 i 100.200.130.123. Mam trzy różne maszyny, które są za zaporą ogniową, ale chcę użyć SSH, aby przekierować jedną maszynę na każdy adres IP. Na przykład: komputer-jeden powinien nasłuchiwać SSH na porcie 22 na 100.200.130.121, podczas gdy komputer-dwa powinien robić to samo na 100.200.130.122 i tak dalej dla różnych usług na portach, które mogą być takie same na wszystkich komputerach.
Na stronie podręcznika SSH -R [bind_address:]port:host:hostport
wymieniono, że mam włączone porty bramy, ale w przypadku korzystania -R
z określonego adresu IP serwer nadal nasłuchuje na porcie we wszystkich interfejsach:
maszyna pierwsza:
# ssh -NR 100.200.130.121:22:localhost:22 [email protected]
hub-server.tld (nasłuchuje SSH na porcie 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
Czy istnieje sposób, aby SSH przekierowywał tylko połączenia o określonym adresie IP z maszyną pierwszą, aby móc jednocześnie słuchać portu 22 na innych adresach IP, czy też muszę coś zrobić z iptables? Oto wszystkie wiersze w mojej konfiguracji ssh, które nie są komentarzami / wartościami domyślnymi:
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
źródło
clientspecified
jest potrzebna zamiast po prostu powiedzieć „włączone”: „Określenie zdalnego adresu bind_dress się powiedzie tylko wtedy, gdy włączona jest opcja GatewayPorts serwera (patrz sshd_config (5))”. Po tym pomyślałem, że po prostu trzeba to ustawićyes
.