Git clone из удаленного репозитория ssh - измените компьютер в удаленной сети перед выполнением команды clone - PullRequest
7 голосов
/ 22 января 2011

Я бы хотел клонировать git-репозиторий с серверов моей компании на мой персональный компьютер. Единственный способ получить доступ к этим серверам «извне» - войти в систему с помощью команды ssh на «machine1»

.
ssh user@machine1.company.xy

К сожалению, git ist не установлен на этой конкретной машине. Так что мерзкий клон вроде

git clone ssh://user@machine1.company.xy/path/to/repo <local-repo-path>

не будет работать. Что мне нужно сделать, это перейти на другой компьютер 'machine2', где установлен git, после входа в сеть через 'machine1'. Поэтому, чтобы заставить работать клон, мне нужно было бы выполнить команду типа

ssh machine2

до фактического выполнения команды git. Есть ли способ сделать это? Может быть, что-то вроде крючка перед клоном?

Можно ли как-то упаковать удаленный репозиторий в файл (патч?), Скопировать этот файл на локальный компьютер и клонировать из этого файла?

Ждем ваших советов и предложений!

1 Ответ

13 голосов
/ 22 января 2011

Это можно сделать, настроив прокси-команду ssh.Примечание: предполагается, что на прокси-сервере доступно netcat ;вы можете заменить netcat аналогичным скриптом на perl или чем-то еще, если нужно.

Добавьте следующее к вашему ~/.ssh/config, создав его при необходимости:

Host machine1
User yourusername
HostName machine1.yourcompany.com

Host machine2
User yourusername
ProxyCommand ssh machine1 nc %h %p
HostName machine2.internal.network

Теперь вы можете ssh machine2и он будет автоматически проходить через machine1.Это означает, что использовать git так же просто, как git clone ssh://machine2/path.

Также возможно объединить репозиторий в один файл, используя команду git bundle.Это не должно быть необходимо при правильной настройке прокси-сервера ssh.

...