Невозможно клонировать git через туннель SSH

TLDR

Я пытаюсь туннелировать ssh с моей машины с Linux на машину с OSx, которая имеет доступ к моей VPN. Это URL-адрес, к которому мне нужен доступ github.someprivateurl.net.

Актуальная проблема в деталях.

Настройка туннеля

hutber@hutber ~ $ ssh -L 3333:github.someprivateurl.net:22 [email protected]
Password:
Last login: Thu Jun  7 01:00:34 2018 from 192.168.1.3
hutber@Jamies-Mac ~ $ 
hutber@Jamies-Mac ~/www/jamie $ git clone ssh://[email protected]/Mortgages/mortgages.git
Cloning into 'mortgages-ui'...
remote: Counting objects: 63823, done.
remote: Compressing objects: 100% (52/52), done.
^Cfatal: The remote end hung up unexpectedlyMiB | 8.44 MiB/s  

^ просто показывает, что когда ssh'd в OSx, я могу клонировать на этой машине.

Доступ к туннелю

hutber@hutber /var/www $ git clone ssh://[email protected]:3333/Mortgages/mortgages-ui.git


Cloning into 'mortgages-ui'... 

Вышеупомянутый клон на моей машине с Linux будет зависать, пока соединение не поймет, что у него нет доступа, и не выбросит меня.

Я не уверен, насколько это полезно... Но я не могу получить доступ к сайту, который пытаюсь клонировать, так что это, очевидно, не имеет ничего общего с git:

OSx

hutber@Jamies-Mac ~/www/jamie $ ping github.someprivateurl.net
PING github.someprivateurl.net (10.113.188.195): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
^Z
[1]+  Stopped                 ping github.someprivateurl.net

линукс

hutber@hutber /var/www $ ping -p 3333 github.someprivateurl.net
PATTERN: 0x3333
PING github.someprivateurl.net (159.34.88.181) 56(84) bytes of data.
From 172.16.24.82 icmp_seq=1 Time to live exceeded
From 172.16.24.82 icmp_seq=2 Time to live exceeded
From 172.16.24.82 icmp_seq=3 Time to live exceeded
From 172.16.24.82 icmp_seq=4 Time to live exceeded
^C
--- github.someprivateurl.net ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3004ms

Как я могу клонировать репозиторий на мою машину с Linux, пока ssh'd в OSx?

Обновить

Поскольку это я считаю просто ошибкой SSH. Я должен упомянуть, что SSH на самом деле проходит через хост к гостевому SSH. У моего гостя есть соединение только с хостом, и он подключен к Интернету через собственный физический ключ Wi-Fi. Это соединение Wi-Fi, которое настроено VPN.


hutber@hutber ~ $ ssh -fNT -L 3333:github.someprivateurl.net:22 [email protected]
Password:
hutber@hutber /var/www $ ssh -p 3333 github.someprivateurl.net
^C //Hangs
hutber@hutber /var/www $ telnet localhost 3333
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-libssh_0.7.0
^^
Connection closed by foreign host.

person Jamie Hutber    schedule 07.06.2018    source источник
comment
Как и в случае любой ошибки git + ssh, проще всего отлаживать ее как проблему ssh. Во-первых, убедитесь, что вы действительно можете подключиться к машине по ssh через порт 3333. Проверка связи недостаточна, на самом деле ssh -p 3333 <host>.   -  person Schwern    schedule 07.06.2018
comment
Спасибо @Schwern hutber@hutber /var/www $ ssh -p 3333 [email protected] ssh: connect to host 192.168.238.130 port 3333: No route to host hutber@hutber /var/www $ ssh -p 3333 192.168.238.130 ssh: connect to host 192.168.238.130 port 3333: No route to hos   -  person Jamie Hutber    schedule 07.06.2018
comment
Ага. Как я и подозревал, туннель не работает. Отладьте это как проблему ssh.   -  person Schwern    schedule 07.06.2018


Ответы (1)


$ ping -p 3333 github.someprivateurl.net

-p не означает порт для проверки связи. Это означает... что-то еще. Так что это не проверка того, открыт ли порт 3333, вы просто странным образом пингуете машину.

Ваш URL-адрес git ssh неверен. Вместо того, чтобы использовать порт 3333 на удаленном хосте, к которому вы туннелируете, вы должны указать ему использовать порт 3333 локального хоста.

git clone ssh://git@localhost:3333/Mortgages/mortgages-ui.git

Как и в случае с большинством проблем с git+ssh, их проще всего отлаживать как проблемы с ssh. Во-первых, попробуйте подключиться по ssh к порту 3333.

ssh -p 3333 localhost

Я подозреваю, что это не сработает. Оттуда отладьте проблему ssh в обычном режиме.

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

  • -f сказать ssh немедленно перейти на задний план
  • -N чтобы он не пытался выполнить удаленную команду
  • -T чтобы не выделять псевдо-терминал, обрабатывайте ввод

Так вот...

ssh -fNT -L 3333:github.someprivateurl.net:22 [email protected]

Вы также можете изучить возможность использования autossh чтобы поддерживать связь для вас.

person Schwern    schedule 07.06.2018
comment
Спасибо за помощь дружище. Cannot fork into background without a command to execute. - person Jamie Hutber; 07.06.2018
comment
@JamieHutber Вы включили -N? - person Schwern; 07.06.2018
comment
Большой палец вверх, это была строчная буква N, когда я это делал. Я обновил вопрос, добавив немного больше информации, которая отформатирована. Кажется, рука, ssh -p... - person Jamie Hutber; 07.06.2018
comment
@JamieHutber Я также заметил, что ваш URL-адрес ssh неверен. Вам нужно подключиться по ssh к локальному порту 3333. Моя ошибка. - person Schwern; 07.06.2018
comment
Действительно интересно.... hutber@hutber /var/www $ ssh -p 3333 localhost Permission denied (publickey). Итак, теперь моя Linux-машина пытается подключиться к OSx без моего предоставления ключа. Мне нужно добавить ключ в мой .ssh/config? - person Jamie Hutber; 07.06.2018
comment
Он работает здесь: 25582 ? Ss 0:00 ssh -fNT -L 3333:github.someprivateurl.net:22 [email protected] - person Jamie Hutber; 07.06.2018
comment
@JamieHutber Когда вы настраиваете туннель, он подключается к [email protected], поэтому для него требуется аутентификация для [email protected]. Когда вы ssh -p 3333 localhost используете существующее соединение с [email protected] по ssh к github.someprivateurl.net. Вам по-прежнему нужна аутентификация для github.someprivateurl.net. То есть, я думаю, ключ (что хорошо). Вам также может понадобиться указать, что вы хотите использовать ssh как git, так и ssh -p 3333 git@localhost. Подробнее можно найти в справке Github. - person Schwern; 07.06.2018
comment
Давайте продолжим обсуждение в чате. - person Jamie Hutber; 07.06.2018
comment
Ключ, который я упустил, заключался в том, что адрес runnel github.someprivateurl.net затем был связан с моим localhost на машине с Linux. - person Jamie Hutber; 07.06.2018
comment
Снова привет, Швен... Только одно от меня. С ssh, если он находится за VPN, я предполагаю, что VPN может заблокировать весь порт 22. Кажется, теперь я вообще не могу получить доступ к 22. - person Jamie Hutber; 21.06.2018
comment
Это зависит от того, как настроен VPN. VPN — это зашифрованный туннель, который делает вид, что сетевой трафик с вашего компьютера исходит из сети VPN. Если туннель ssh должен добраться до машины, имеющей VPN-подключение, было бы проще запустить VPN вместо туннелирования ssh к машине, на которой работает VPN. - person Schwern; 21.06.2018
comment
Да, у меня нет никакого контроля над VPN. На самом деле причина всего этого в том, что я не буду использовать OSx, поэтому я запускаю VPN внутри виртуальной машины и мне нужен хост, чтобы иметь доступ к определенным URL-адресам. Pulse работает только в OSx, вы не видите поддержки Linux. Так что это причина для туннелирования VPN. Если есть другой способ получить доступ к URL-адресу на хосте, я буду во все уши :) - person Jamie Hutber; 22.06.2018
comment
@JamieHutber Проще всего было бы использовать OS X, если это то, что вы решили использовать в своей работе, похоже, ваша настройка приведет к еще большему количеству проблем. Если нет, похоже, Pulse может работать в Linux. - person Schwern; 22.06.2018
comment
Ха, так мои коллеги по работе продолжают говорить мне. Я уйду, прежде чем мне придется работать с OSx :) Я действительно заставил пульс работать, но наша работа настроила 4 проверки, которые пульс будет выполнять, прежде чем ему будет разрешено подключение, Mcafee, файловое хранилище, пароль root, что-то еще, что я могу Не помню... Но я ценю, что вы нашли время. Больше всего меня сбивает с толку тот факт, что на той же машине туннель SSH работает в моем домашнем Интернете. Но когда я подключен к гостевой сети работы, это происходит сейчас. Значит, это не VPN блокирует ssh-соединение... Я недоумеваю, что это может быть!? - person Jamie Hutber; 22.06.2018
comment
@JamieHutber Как старый пользователь Unix и Mac, я предлагаю вам подумать, является ли это наилучшим использованием вашего времени, а также времени ваших коллег и работодателя. - person Schwern; 22.06.2018
comment
Вы не ошиблись, но мне недвусмысленно сказали, что я могу использовать Linux. Честно говоря, я бы предпочел просто уйти, если я не могу заставить его работать. Я не согласен с вашим утверждением. Мне повезло, что я могу уйти без проблем в свободное время. Так что мне придется попытаться выяснить, почему рабочая сеть отличается от моей домашней сети. - person Jamie Hutber; 22.06.2018