Подтвердить что ты не робот

Git клон через обратный туннель

У меня есть мой Git репо на моей машине, у которой нет собственного IP-адреса, дома; Я хочу клонировать это репо на моем веб-сервере. Правильно ли, что обратный туннель позволит мне вытащить с моей машины на сервер? Какую команду я выдаю для выполнения клона? Моя локальная машина запускает Windows; сервер запускает Ubuntu.

4b9b3361

Ответ 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, который предоставляет ваш маршрутизатор.