Можливий дублікат:
Кілька тунів SSH для стрибків…
Ось налаштування:
робочий стіл : мій робочий стіл. У мене є корінь і я можу робити все, що завгодно. Кубунту 10.04.
bastion : хост бастіону, який дозволяє лише вхідні SSH-з'єднання на порт 22. Я не керую цим сервером. Я не можу записувати файли ніде на цьому сервері. Єдині команди, доступні мені, - це ssh
вбудовані оболонки (bash). CentOS.
server : сервер з файлом на ньому, який я хочу отримати (тобто скопіювати на робочий стіл ). Дозволяє лише вхідні 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.
Я знаю, що є й інші варіанти: я можу занести цільовий файл на мій екран і зберегти його локально, але це злом (і дратує, якщо у файлі є бінарні дані).
EDIT: Я вирішив одне дурне рішення:
bastion % ssh server "cat filename1" | ssh localhost "cat > filename2"
Це працює, хоча ssh-підказки (ви впевнені, що хочете підключитися, так / ні? Та пароль) отримують один за одним, тому вам доведеться вводити "так" та різні паролі хоста у правильному порядку). Але було б добре, якби я міг пройти через сервер з робочого столу .