Я работаю с сервером, защищенным брандмауэром. Я установил ssh-туннель к промежуточному серверу в Интернете следующим образом:
remoteuser@behind_fw$ ssh -N -f -R 10002:localhost:22 middleuser@middle
Но я не могу подключиться напрямую через этот сервер, это не работает:
user@local$ ssh remoteuser@middle -p 10002
Мне нужно подключиться в два этапа:
user@local$ ssh middleuser@middle
middleuser@middle$ ssh remoteuser@localhost -p 10002
Выход netstat -l
по середине:
tcp 0 0 localhost:10002 *:* LISTEN
но должно получиться примерно так:
tcp 0 0 *:10002 *:* LISTEN
как я могу этого добиться?
Это туннель, открытый на удаленном сервере, и этот сервер должен иметь GatewayPorts установлен в да в его / etc / ssh / sshd_config.
В зависимости от того, какие пользователи у этого сервера, вы можете захотеть использовать Соответствие возможность ограничить эту возможность для вашего пользователя.
Match User middleuser
GatewayPorts yes
Обратите внимание, что вы, вероятно, захотите добавить этот блок Match в конец sshd_config, поскольку блок Match продолжается до тех пор, пока не начнется другой или пока не закончится файл.
При этом, как насчет того, чтобы вместо этого попробовать то, что я считаю немного более чистым решением?
user@local$ ssh -N -f -L 10002:behind_fw:22 middleuser@middle
user@local$ ssh remoteuser@localhost -p 10002
Предполагая, что вы используете OpenSSH, вам необходимо указать адрес привязки. Попробуйте что-нибудь вроде:
ssh -N -f -R *:10002:localhost:22 middleuser@middle
или
ssh -N -f -R :10002:localhost:22 middleuser@middle
Подпись для -R:
-R [bind_address:]port:host:hostport
на OpenSSH. По соображениям безопасности по умолчанию используется localhost, если вы его не укажете. Возможно, вам придется изменить GatewayPorts, чтобы он работал, в зависимости от вашей конфигурации. Видеть SSH (1) для получения дополнительной информации.