ssh-соединение с сервера через другой сервер (A-> B-> C)

У меня есть 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.

1
задан 13 October 2016 в 16:51
2 ответа

Вы ищете туннель SSH.

ssh -f user@B -L 2000:C:22

Он соединяется с сервером B, напрямую переходит в фоновый режим с помощью -f, а затем открывает порт 2000 на локальном хосте с помощью L. Все, что посылается на этот порт на локальном хосте, переадресуется на порт 22 на C. Поэтому, как только вы ввели эту команду, вы можете сделать

ssh localhost -p 2000

, что соединит вас с C.

Update

Похоже, я вас неправильно понял, простите. Если вы не можете изменить команду на A, вы все равно можете указать, что должно произойти при входе в систему, изменив ~/.bashrc пользователя.

.
1
ответ дан 3 December 2019 в 20:33

В домашней директории пользователя на сервере B вы бы добавили последнюю строку в файл ~/.login (или создали бы его, если он не существует), чтобы запустить второй ssh userc@hostC.

Пожалуйста, не используйте ~/.bashrc: в то время как первый используется после входа в систему, второй используется для каждого выполнения bash, даже в скриптах, начинающихся с #!/bin/bash.

.
1
ответ дан 3 December 2019 в 20:33

Теги

Похожие вопросы