Как я могу использовать SSH как произвольный канал через бастионный хост?
Возможный дубликат:
Несколько прыжков SSH туннель...
Вот настройки:
рабочий стол: мой рабочий стол. У меня есть root и я могу делать все, что захочу. Kubuntu 10.04.
бастион: хост-бастион, который разрешает только входящие SSH-соединения через порт 22. Я не контролирую этот сервер. Я не могу писать файлы где-нибудь на этом сервере. Единственные доступные мне команды ssh
и оболочки (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-запросы (вы уверены, что хотите подключиться, да / нет? И пароль) получаются по-разному, поэтому вы должны ввести "да" и различные пароли хоста в правильном порядке). Но было бы неплохо, если бы я мог туннелировать на сервер с рабочего стола.
1 ответ
Сначала подключитесь к бастиону и настройте туннель из desktop
-> bastion
ssh -L 30000:localhost:30000 bastion
Теперь настройте туннель от bastion
-> server
запустив это на bastion
ssh -L 30000:localhost:22 server
Теперь вы можете sftp server:30000:/path/to/the/file/you/want.txt
вытащить файл в ваш текущий каталог.
Первые две команды можно упростить, просто запустивssh -L 30000:localhost:30000 bastion ssh -L 30000:localhost:22 server
с рабочего стола я думаю.
РЕДАКТИРОВАТЬ:
Пытаться ssh -L 30000:server:22 bastion