Для меня сети — очень «непрозрачная» вещь, и даже прочитав множество руководств по 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 .