У меня есть 3 сервера, давайте назовем их A, B и C
Сервер C находится за брандмауэром, и только сервер B может подключиться к нему. Серверы B и C находятся под моим контролем. A -> B -> C
Проблема в том, что я не могу изменить команду на сервере A, который, вероятно, является простым пользователем ssh @ B.
Я пытаюсь переадресовать входящее соединение, используя параметр команды в authorized_keys:
command="ssh user@C" ssh-rsa KEY
Когда A устанавливает соединение с B, я вижу, что соединение установлено с C, но A, похоже, не осознает этого и время вышло.
Я пытался добавить параметры -t, -t -t, -T или -N в команду ssh, но безуспешно. Есть ли способ установить соединение ssh таким образом, чтобы сервер A думал, что он общается с сервером B.
Соединение между B и C должно запускаться, когда A устанавливает соединение с B, и закрывается, когда A закрывает соединение .
Вся аутентификация выполняется с использованием ключей.
[править]
Чтобы уточнить: Я не могу управлять командой на сервере A, но, как и сейчас, A подключается к B, а затем B открывает соединение с C. Проблема здесь в том, что A не распознает это новое соединение. Я думаю, что он не получает подсказку или что-то в этом роде, чтобы A знал, что соединение есть.
Если я использую эту настройку вручную с
ssh user@B
, она работает, и я напрямую вошел в систему на C.
Вы ищете туннель SSH.
ssh -f user@B -L 2000:C:22
Он соединяется с сервером B, напрямую переходит в фоновый режим с помощью -f
, а затем открывает порт 2000 на локальном хосте с помощью L
. Все, что посылается на этот порт на локальном хосте, переадресуется на порт 22 на C. Поэтому, как только вы ввели эту команду, вы можете сделать
ssh localhost -p 2000
, что соединит вас с C.
Похоже, я вас неправильно понял, простите. Если вы не можете изменить команду на A, вы все равно можете указать, что должно произойти при входе в систему, изменив ~/.bashrc
пользователя.
В домашней директории пользователя на сервере B вы бы добавили последнюю строку в файл ~/.login
(или создали бы его, если он не существует), чтобы запустить второй ssh userc@hostC
.
Пожалуйста, не используйте ~/.bashrc
: в то время как первый используется после входа в систему, второй используется для каждого выполнения bash, даже в скриптах, начинающихся с #!/bin/bash
.