Как зайти по SSH на сервер через другой сервер

Предположим, что IP-адрес вашей машины, с которой вам нужно зайти на сервер1 по SSH заблокирован на файрволе данного сервера. Однако, есть ещё один сервер2, на который вы можете зайти по SSH, а уже с него зайти на сервер1. Вы бы так и сделали, но всё осложняется тем, что доступ осуществляется по ключу только с вашей машины, без ввода пароля и вы просто не знаете пароль. В этом случае, даже если вы находитесь на сервере1 вы не сможете зайти на сервер2 обычным образом, ведь у вас потребует пароль! Но существует способ как можно решить данную проблему.

  1. Выполните на своей машине команду:
    ssh -L *:9999:xxx.xxx.xxx.xxx:22 -l root server2
    
    где 9999 - это порт, через который будет осуществляться перенаправление работы SSH (необходимо, чтобы данный порт не был занят другими программами и не должен быть закрыт на вашей машине на файрволе), а xxx.xxx.xxx.xxx это IP-адрес сервера1, по которому сервер1 должен быть доступен с сервер2. server2 - это соответственно имя или IP-адрес сервера2. После ввода этой команды у вас запросит пароль на server2 (или просто произойдёт вход на server2, если у вас настоен доступ по ключу).
  2. Теперь для доступа к сервер1 введите команду:
    ssh -l user 127.0.0.1 -p 9999
    
    Где user - это имя пользователя, с которым вы должны зайти на сервер1. При выполнении этой команды, сперва произойдёт перенаправление запроса на локальную машину на порт 9999, а затем оттуда запрос пройдёт на сервер2 и уже выполнится с сервер2. В итоге вы получите доступ к сервер1 с вашей локальной машины транзитом через сервер2.