Все компьютеры, которые я использую, работают под управлением Ubuntu. Чтобы работать из дома, я выполняю SSH со своего домашнего компьютера на свой лабораторный компьютер следующим образом:
# First a port knock is needed
joe@homepc> telnet ssh.university.edu 9000
# Next SSH to one of the external SSH servers of university
# This logs me into one of many SSH servers serving as interface
joe@homepc> ssh student7@ssh.university.edu
# Finally SSH to my lab PC inside university network
student7@university999> ssh joedude@labpc
# And I am in my labpc
joedude@labpc>
Как использовать rsync
для синхронизации каталога на labpc
с каталогом на моем homepc
? Кроме того, было бы здорово, если бы был какой-то способ автоматизировать все это, чтобы я мог rsync с помощью одной команды из моего homepc.
Существует несколько способов решить это, однако, потому что мы хотим выполнить команду rsync на Вашем домашнем ПК, я думаю, что лучший способ состоял бы в том, чтобы создать туннель от Вашего домашнего ПК до labpc, следующим образом:
joe@homepc> ssh -L 2222:127.0.0.1:2222 student7@ssh.university.edu
student7@university999> ssh -L 2222:127.0.0.1:22 joedude@labpc
Теперь, на Вашем домашнем ПК, необходимо смочь к ssh непосредственно в лабораторию ПК:
joe@homepc> ssh -p 2222 joedude@localhost
После того как это работает, затем можно создать rsync сценарий.
Я добавил бы следующие строки к ~/.ssh/config
# Tunnel to labpc
Host labpc_tun
User joedude
Port 2222
# ProxyCommand ... TODO: set up tunnel automatically
HostName 127.0.0.1
Теперь, необходимо смочь сделать (в отдельном окне, после того, как сначала два логина ssh сделаны):
joe@homepc> rsync labpc_tun:/path-on-labpc/ /path-on-homepc/
Существуют партии больше улучшений, которые Вы могли сделать после этого но я буду ожидать, пока Вы не получите первую работу части и затем видите, в каком количестве автоматизации Вы нуждаетесь. Для завершенной автоматизации этого, необходимо было бы использовать ssh-keygen для разрешения логинов ssh без пароля. Вы могли также добавить больше к .ssh/config для первого выхода ssh участок. Используя параметр ProxyCommand в .ssh/config Вы могли автоматизировать всю вещь.