Git Remote добавить с другим портом SSH


336

В Git, как я могу добавить удаленный исходный сервер, когда мой хост использует другой порт SSH?

git remote add origin ssh://user@host/srv/git/example

Ответы:


573

Вы можете просто сделать это:

git remote add origin ssh://user@host:1234/srv/git/example

1234 порт SSH используется


10
Спасибо. Просто дополнение: в части пути используйте абсолютный путь, а не относительный путь к домашнему каталогу пользователя ...
— Snicolas

@Snicolas: Почему не следует использовать относительный путь?
— Ханнес

12
@Sincolas Это работает, если у вас есть репозиторий в домашнем каталоге пользователей: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / пример . Кстати: вы получаете репозиторий <name> .git от git clone --bare <адрес>
— MartinL

@Jameo Это является абсолютным путем.
— igorw

48
Обратите внимание, что это не будет работать, если вы удалите протокол. т.е. если вы попробуете следующее, это не будет работать. git remote add origin user@host:1234/srv/git/example
— Биджай Рунгта

137

Вам нужно отредактировать файл ~ / .ssh / config. Добавьте что-то вроде следующего:

Host example.com
    Port 1234

Быстрый поиск в Google показывает несколько разных ресурсов, которые объясняют это более подробно, чем я.


16
Это сработало для меня. Мне нравится такой подход лучше, чем вставлять его в Git Remote. Спасибо! Нет необходимости указывать абсолютный путь.
— Майкл ван Ройен

Это прекрасно работает. Также таким образом у меня может быть определенный ключ вместо стандартного id_rsa. Мало того, мой сервер очень требователен, и вам нужно быстро или правильно настроить его, что не удастся, если вы добавите пароль. Так что я использую PasswordAuthentication noтакже.
— Алексис Вилке

4
Лучше иметь его на удаленном устройстве, чем скрывать его в файле конфигурации следующим образом: когда у вас есть все в одном месте, вы никогда не сможете забыть о другом номере порта и можете просто скопировать и вставить URL-адрес для использования кем-либо еще.
— МАРТ

1
@MarcH Это на самом деле зависит от ситуации. Мне нравится использовать случайные номера портов на моих экземплярах VPS. Наличие порта в файле конфигурации - это один из способов, с помощью которого вы можете скрыть эту информацию от соавторов (то есть, когда у вас несколько удаленных компьютеров, удаленный хост развертывания отличается от внутреннего репозитория исходного кода).
— Рагунатх Джавахар

@RagunathJawahar Я не думаю, что использование случайных номеров портов является очень распространенным случаем использования.
— 2011 г.

29

Лучший ответ не работает для меня. Мне нужно было ssh://с самого начала.

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

Для тех из вас, кто редактирует ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
Отлично. Один вопрос, однако, как мне сделать это для подмодулей? Это не похоже на работу.
— m4l490n

11

Вместо того, чтобы использовать ssh://префикс протокола, вы можете продолжить использовать обычную форму URL для доступа к git через SSH, с одним небольшим изменением. Напоминаем, что обычный URL :

git@host:path/to/repo.git

Чтобы указать альтернативный порт, поместите скобки вокруг user@hostдетали, включая порт:

[git@host:port]:path/to/repo.git

Но если изменение порта носит временный характер, вы можете указать git использовать другую команду SSH вместо изменения удаленного URL-адреса вашего хранилища:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
Добавление квадратных скобок вокруг порта git @ host: работало для меня прекрасно. Я использую gitlab, и на этом сервере требуется нестандартный порт, но я также не могу использовать абсолютный путь к репо (я этого не знаю). Спасибо
— Томас Ле

1
Мне кажется, что это наиболее гибкий метод, поскольку он поддерживает относительные пути и не использует ssh-
— конфигурации
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.