Git клон через обратный туннель - PullRequest
17 голосов
/ 08 июня 2011

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

Ответы [ 5 ]

16 голосов
/ 08 июня 2011

В принципе, вы можете сделать что-то вроде

ssh -R 2222:localhost:22  username@webserver.com 

, а затем использовать на своем веб-сервере

git clone ssh://user@localhost:2222/path/to/repo.git/

Это дважды зашифрует ваши данные.

Кроме того, вы можете использовать любой из других протоколов, которые поддерживает git, и перенаправить нужные порты для них.

Вы также можете поместить такой раздел в ~ / .ssh / config:

Host my-server
HostName localhost
ForwardX11 no
Port 2222

Тогда вы можете использовать эту команду клона: git clone git@my-server:mytools/projectName.git. (Это позволяет хранить ключ сервера, который не принадлежит localhost, и делает URL-адрес в вашем git config более понятным.)

Для вашего сервера (как туннельного сервера, так и конечного хоста) вы обычно хотите проходить аутентификацию для каждой авторизации с открытым ключом, для этого вы должны поместить закрытый ключ (например, id_rsa) в каталог ~ / .ssh. (И все файлы, в частности закрытый ключ, должны быть доступны для чтения только вашему пользователю, а каталог - только для вашего пользователя.)
Все это не только для туннеля, но и для общего SSH.

5 голосов
/ 11 мая 2013

Вы можете отправить изменения на веб-сервер, вместо того, чтобы пытаться их извлечь:

Установить репозитории на веб-сервере:

cd /somedir
git init --bare

Нажмите на эти репозитории с вашегоdev machine:

git remote add web user@web:/somedir
git push web master 

Если вы хотите перейти к не-пустым репозиториям (например, если ваше веб-приложение запускается с проверкой), то вам нужно будет перейти к ветке, которая в данный момент не извлеченаа затем объедините.

т.е. на своем компьютере разработчика:

git push web master:master-from-dev

, затем войдите в веб-машину и выполните:

git merge master-from-dev
1 голос
/ 04 июля 2015

Еще одна альтернатива - установить пустой репозиторий на вашем сервере и перейти на него с локального компьютера.Потяните оттуда в хранилище вашего сервера.

Есть много преимуществ:

  • вам не нужно выставлять свою личную машину
  • вы можете работать с нескольких машин(например, ваш ноутбук и ваш рабочий стол), у каждого из которых есть клон вашего голого репо
  • , вы даже можете делать патчи на своем сервере, переходить к голому репо и перетаскивать их на свой рабочий компьютер.

См. http://joemaller.com/990/a-web-focused-git-workflow/ для хорошего описания.

1 голос
/ 09 июня 2011

Я сам не пробовал (и не могу сказать, насколько хорошо он работает с NAT), но похоже, что DynDNS может быть одним из решений вашей проблемы.Он предоставляет общедоступный URL-адрес вашей домашней машины, который может даже автоматически обновляться.Со страницы поддержки :

Бесплатная служба Dynamic DNS предоставляет удобный для запоминания URL-адрес для быстрого удаленного доступа к вашей сети.Это позволяет вам обращаться к домашним услугам, таким как личный веб-сайт, камера безопасности, VPN, игровой сервер и т. Д., Используя простой веб-адрес, такой как http://myhome.dyndns.org/,, вместо бессмысленного, постоянно меняющегося IP-адреса, такого как http://123.45.67.89. Вы можете узнать больше о том, как работает динамический DNS, здесь .

Конечно, потому что это облегчит другим людям доступ к вашему компьютеру, а такжеВы также должны принять соответствующие меры безопасности.Если это работает, вы можете просто войти в ssh на домашнюю машину через URL DynDNS.

0 голосов
/ 08 июня 2011

Вы можете открыть порт ssh на брандмауэре и настроить маршрутизацию на маршрутизаторе, чтобы он попадал на ваш компьютер.Вам понадобится только тот IP-адрес, который предоставляет ваш маршрутизатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...