Возможный дубликат:
Несколько прыжков SSH туннель ...
Вот настройки:
рабочий стол: мой рабочий стол. У меня есть root и я могу делать все, что захочу. Kubuntu 10.04.
бастион: хост-бастион, который разрешает только входящие SSH-соединения через порт 22. Я не контролирую этот сервер. Я не могу писать файлы где-либо на этом сервере. Единственные доступные мне команды - это встроенные команды ssh
и shell (bash). CentOS.
сервер: сервер с файлом, который я хочу получить (т.е. скопировать на рабочий стол). Разрешает только входящие SSH-соединения от бастиона. Не разрешает исходящие соединения ssh. CentOS.
Я могу SSH с рабочего стола на бастион, а затем SSH с бастиона на сервер. Я могу настроить SSH-туннель на B следующим образом:
ssh -fNL 30000:localhost:22 server
И тогда следующее позволяет мне подключиться к серверу из бастиона:
bastion % ssh localhost -p 30000
Но это не работает (бастион отказывается от соединения):
desktop % ssh bastion -p 30000
Мне интересно, есть ли какой-нибудь способ, которым я могу превратить ssh-сессию с рабочего стола на бастион в туннель, который локально соединяется с портом 30000 на бастионе, чтобы я мог затем пройти через это соединение, чтобы добраться до сервера. Если бы бастион позволял входящие соединения на высоких портах, я мог бы сделать это, но это не так, только порт 22.
Я знаю, что есть и другие варианты: я мог бы перехватить целевой файл на своем экране и сохранить его локально, но это хак (и раздражает, если в файле есть двоичные данные).
РЕДАКТИРОВАТЬ: Я выяснил одно глупое решение:
bastion % ssh server "cat filename1" | ssh localhost "cat > filename2"
Это работает, хотя ssh предлагает (вы уверены, что хотите подключиться, да / нет? и пароль) получайте по-другому, поэтому вы должны ввести "да" и различные пароли хоста в правильном порядке). Но было бы неплохо, если бы я мог проложить туннель к серверу с рабочего стола.