git push с использованием переадресации портов (туннель SSH) - PullRequest
0 голосов
/ 18 июня 2011

Я пытаюсь получить доступ к репозиторию GIT, размещенному в кластере, который существует за брандмауэром. Когда я нахожусь в кампусе (который находится за брандмауэром), я могу получить доступ к кластеру напрямую, и я могу подключиться по SSH к конкретной машине за пределами кампуса и затем ssh к кластеру, если мне это нужно.

Я попытался настроить туннель, используя:

sudo ssh -L 9418:cluster:9418 username@ssh.server

но я все еще не могу запустить "git push" с моей машины. Я знаю, что что-то упустил, но не могу понять это.

EDIT: Я изменил ~ / .ssh / config, чтобы иметь:

Host cluster
     NoHostAuthenticationForLocalhost  yes
     Hostname localhost
     Port 9418

и получаю ошибки при запуске git push:

ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Я предполагаю, что часть имени хоста удаленного URL Git - cluster вместо localhost. Каков вывод git config remote.origin.url? Если это что-то вроде этого:

git://cluster/repo.git

затем измените его на:

git://localhost/repo.git

Как работает переадресация порта ssh, если клиент ssh открывает порт (в вашем случае 9418) на вашем локальном компьютере и прослушивает соединения. Всякий раз, когда приложение подключается к этому порту, ваш ssh-клиент просит ssh-сервер (ssh.server в вашем случае) открыть соединение с удаленной стороной туннеля (cluster порт 9418 в вашем случае). Все данные, отправленные на локальный порт, перенаправляются на сервер ssh через существующий сеанс ssh. Сервер ssh затем вводит данные в свое соединение с конечным компьютером. Итак, с вашей точки зрения, вы подключаетесь к своей локальной машине. С точки зрения получателя вы подключаетесь с ssh-сервера.

Кроме того, ваша конфигурация ssh выглядит неправильно. Этот конфиг сообщает вашему клиенту, что когда вы хотите подключить ssh к компьютеру с именем cluster, он должен вместо этого подключиться к localhost порту 9418. В соответствии с введенной вами командой ssh, порт localhost 9418 перенаправляется на порт cluster 9418. Действительно ли ssh-сервер cluster прослушивает порт 9418 вместо порта по умолчанию 22? Я предполагаю, что cluster на самом деле работает Git-сервер на порту 9418, и в этом случае вам вообще не нужно изменять конфигурацию ssh.

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

Довольно странно, как это обычно должно работать: это помогает? У вас есть биты конфигурации ssh?

...