Если Вы хотите, чтобы-R переданный порт на сервере B был достижим с сервера A, необходимо указать связывание адресного на сервере B слева от удаленного порта. Например, если B имеет адрес 1.2.3.4, и Вы соединяетесь от ноутбука:
laptop:~ $ ssh -R 1.2.3.4:10443:127.0.0.1:443 server-b
Это передаст порт 10443 на сервере-b к 443 на ноутбуке. Если Вы хотите использовать порт 443 вместо этого, войти в систему к серверу-b как корень.
Это невозможно. Связь между вами и ssh-сервером полностью зашифрована, iptables не имеет возможности заглянуть внутрь пакета и, следовательно, может соответствовать только на основе IP / порта на отправляющей и принимающей стороне.
Я бы настроил разные порты на общедоступная машина и перенаправьте их через iptables на машины в фоновом режиме, а затем сделайте что-то вроде этого в конфигурации вашего ssh-клиента (~ / .ssh / config):
Host machineA
HostName your-public-machine
Port 12341
Host machineB
HostName your-public-machine
Port 12342
Host machineC
HostName your-public-machine
Port 12343
С этой конфигурацией вы можете просто запустить ssh machineA
, ssh machineB
или ssh machineC
и перейдите к нужному компьютеру.