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.