Создаете ssh-туннель для передачи файлов?

Создаете ssh-туннель для передачи файлов?

Для меня сети — очень «непрозрачная» вещь, и даже прочитав множество руководств по SSH, я не понимаю, как создать простой туннель для передачи файлов.

Конфигурация следующая:

My Computer --[Internet]--> Bridge Machine --[Local Network]--> Final Machine

В настоящее время я делаю следующее:

1) Connect to the Bridge Machine with :
ssh -X [email protected]

2) Connect to the Final Machine with :
ssh -X username@finalmachine

3) I copy the address of files I need (for example .../mydirectory)

4) Then I deconnect from the finalmachine with :
exit

5) I copy the files to the bridge :
scp -r username@finalmachine:/.../mydirectory .

6) I deconnect from the bridge with :
exit

7) I copy the files to my machine :
scp -r [email protected]:/.../mydirectory .

Что довольно сложно. Мой вопрос простой: как упростить это с помощью SSH-туннеля?

(и, пожалуйста, объясните мне значение каждой командной строки, которую вы пишете, чтобы понять, что на самом деле делает каждая строка, и избежать использования ее как чего-то магического. Кроме того, если используются некоторые номера портов, объясните мне, могу ли я выбрать совершенно случайное число или мне нужно выбрать определенное.)

решение1

Настройте файл конфигурации ssh:

~/.ssh/config

Этот файл поможет вам во многих отношениях, но в конечном итоге позволит вам сделать все это за один шаг.

Сначала настройте псевдонимы для каждой машины.

Host bridge
User username

Host final
User username

Теперь вы можете использовать «ssh -X bridge» для подключения к первой машине.

Для этого следующего шага вам понадобится netcat на каждой машине (попробуйте "which nc") для проверки. Затем используйте ProxyCommand с вашей 'финальной' конфигурацией машин, чтобы она выглядела так:

Host final
User username
ProxyCommand ssh -CAYq bridge exec nc %h %p

Эта команда отправляет все, что вам нужно, через центральную машину на хост %h на порт %p (то есть, если вы хотите отправить данные других приложений на другие порты, вы можете это сделать — пока это соединение открыто)

Если у вас настроены ключи, то никаких запросов на ввод пароля также не будет, если нет: сначала вам будет предложено ввести bridge, а затем final.

Теперь «ssh final» должен работать, а также:

scp -r final:/.../directory .

Связанный контент