1

Я физически на машине, которая находится за брандмауэром и не может быть ssh'd в. Давайте назовем этот компьютер. ПК может подключаться к двум компьютерам, один на AWS и один, который является частью vpn-соединения, называть их A и V соответственно. A и V не могут общаться друг с другом напрямую. Мне нужно часто перемещать файлы между A и V, и я делал это с помощью scp'ing на ПК, а затем scp'ing с ПК. Есть лучший способ сделать это? A и V - это Linux, но на ПК есть Cygwin.

1 ответ1

1

Да, это может быть сделано.

1) убедитесь, что вы установили ssh без пароля на всех трех машинах, т. Е. Используете криптографические ключи;

2) выгрузить пакет autossh на компьютер ПК; затем создайте файл с именем auto1 с таким содержанием:

 #!/bin/sh
 /usr/lib/autossh/autossh -M 6521 -f -p SSH_PORT_OF_A -2 -N -D -R 8100:localhost:SSH_PORT_OF_PC Your_Name@A's_IP_Address -i /path/to/A's/private/key

и другой файл с именем auto2 с эквивалентным содержимым:

 #!/bin/sh
 /usr/lib/autossh/autossh -M 6521 -f -p SSH_PORT_OF_V -2 -N -R 8100:localhost:SSH_PORT_OF_PC Your_Name@A's_IP_Address -i /path/to/A's/private/key

сделать эти два файла исполняемыми,

  chmod 755 auto1
  chmod 755 auto2

и теперь добавьте следующую строку в /etc/rc.local:

 /PATH/TO/auto1
 /PATH/TO/auto2

Это запускается при загрузке autossh , умной программы, которая продолжает перезапускать ssh, если он отключен; ssh-соединение является обратным туннелем, все соединения с localhost:8100 на A и V автоматически перенаправляются на порт ПК, который я назвал SSH_PORT OF_PC, вы должны заменить его значениями для SSH_PORT_OF_A, SSH_PORT_OFV.

Осторожно: вы уже должны были подключиться через ssh к этим двум машинам ранее, т. Е. Должен был быть обмен ключами.

3) Поместите закрытые криптографические ключи A и V в /home/Your_Name/.ssh.

4) Теперь вы можете подключиться от A (или V) к ПК с помощью

 ssh  Me_at_PC@localhost -p 8100 -i /path/to/PC'sPrivateKey

5) Но вы также можете перейти с A на V через ПК, например:

ssh  -t Me_at_PC@localhost -p 8100 -i /path/to/PC'sPrivateKey ssh -t Me_at_V@V's_IP_address -p SSH_PORT_OF_V -i /home/My_name_On_VG/.ssh/PrivateKeyOfV

and viceversa, 

ssh  -t Me_at_PC@localhost -p 8100 -i /path/to/PC'sPrivateKey ssh -t Me_at_A@A's_IP_address -p SSH_PORT_OF_A -i /home/My_name_On_VG/.ssh/PrivateKeyOfA

6) Это можно упростить, либо назначив псевдонимы этим двум длинным командам, либо узнав, как использовать параметр ProxyCommand в ssh.

7) Хотя эта конфигурация работает дословно для меня, это может быть из-за того, что в моей системе есть кое-что, что я считаю само собой разумеющимся, но чего не хватает в вашей. Будьте готовы сделать небольшую отладку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .