У меня есть мой Git репо на моей машине, у которой нет собственного IP-адреса, дома; Я хочу клонировать это репо на моем веб-сервере. Правильно ли, что обратный туннель позволит мне вытащить с моей машины на сервер? Какую команду я выдаю для выполнения клона? Моя локальная машина запускает Windows; сервер запускает Ubuntu.
Git клон через обратный туннель
Ответ 1
В принципе, вы можете сделать что-то вроде
ssh -R 2222:localhost:22 [email protected]
а затем использовать на своем веб-сервере
git clone ssh://[email protected]:2222/path/to/repo.git/
Это зашифрует ваши данные дважды.
В качестве альтернативы вы можете использовать любой из других протоколов, поддерживаемых git, и переадресации правильных портов для них.
Вы также можете поместить такой раздел в ~/.ssh/config:
Host my-server
HostName localhost
ForwardX11 no
Port 2222
Затем вы можете использовать эту команду clone:
git clone [email protected]:mytools/projectName.git
. (Это позволяет хранить ключ сервера не как принадлежащий localhost
, и делает URL-адрес в вашем очистке конфигурации git.)
Для вашего сервера (как для туннельного сервера, так и для конечного хоста) вы обычно хотите аутентифицировать авторизацию с открытым ключом, для этого вы должны поместить закрытый ключ (например, id_rsa) в ваш каталог ~/.ssh. (И все файлы там, в частности, закрытый ключ, должны быть доступны для чтения только для вашего пользователя, а каталог доступен для записи только для вашего пользователя.)
Все это не характерно для туннеля, но общий материал SSH.
Ответ 2
Вы можете нажать на изменения на веб-сервере, вместо того, чтобы пытаться их вытащить:
Настройте репозитории на веб-сервере:
cd /somedir
git init --bare
Нажмите на этот репозиторий с вашей машины dev:
git remote add web [email protected]:/somedir
git push web master
Если вы хотите нажать на не-голые репозитории (например, если ваше веб-приложение запускается в кассе), вам нужно нажать на ветвь, которая в настоящее время не выгружена, а затем слияние.
то есть. на вашей машине dev:
git push web master:master-from-dev
затем войдите в веб-машину и выполните:
git merge master-from-dev
Ответ 3
Я не пробовал это сам (и не могу говорить, насколько хорошо это касается NAT), но это звучит как DynDNS может быть одним из решений вашей проблемы. Он предоставляет общедоступный URL-адрес вашего домашнего компьютера, который может даже автоматически обновляться автоматически. На странице поддержки :
Свободный Динамический DNSсервис обеспечивает простоту запоминания URL для быстрого удаленного доступа к вашему сеть. Это позволяет вам достичь услуг на дому, таких как личные сайт, камера безопасности, VPN, игра сервер и т.д., используя простую сеть адрес, подобный http://myhome.dyndns.org/, вместо бессмысленный, постоянно меняющийся IP-адрес адрес http://123.45.67.89. Вы can узнать больше о том, как Dynamic DNS работает здесь.
Конечно, поскольку это облегчит доступ других пользователей к вашему компьютеру, вы также должны принять соответствующие меры безопасности. Однако, если он работает, вы можете просто отправить ssh в свою домашнюю машину с помощью URL-адреса DynDNS.
Ответ 4
Другой альтернативой является создание голого репозитория на вашем сервере и переход к нему с вашей локальной машины. Вытащите оттуда в свой серверный репозиторий.
Существует много преимуществ:
- вам не нужно выставлять свою личную машину
- вы можете работать с нескольких компьютеров (например, вашего ноутбука и рабочего стола), каждый из которых имеет клон вашего голого репо
- вы даже можете делать патчи на своем сервере, нажимать на голый репо и вытаскивать их на свою рабочую машину.
Для хорошего описания см. http://joemaller.com/990/a-web-focused-git-workflow/.
Ответ 5
Вы можете открыть порт ssh на своем брандмауэре и настроить маршрутизацию на своем маршрутизаторе, чтобы попасть на ваш компьютер. Вам понадобится только ip, который предоставляет ваш маршрутизатор.