git remote add com outra porta SSH


336

No Git, como posso adicionar um servidor de origem remota quando meu host usa uma porta SSH diferente?

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

Respostas:


573

Você pode fazer isso:

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

1234 é a porta ssh sendo usada


10
Valeu. Apenas um complemento: na parte do caminho, usar o caminho absoluto, não um caminho relativo ao diretório home do usuário ...
Snicolas

@Snicolas: Por que não devemos usar um caminho relativo?
Hannes

12
@Sincolas Funciona se você tiver o repositório no diretório inicial do usuário: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / exemplo.git . btw: você recebe um repositório <name> .git por git clone --bare <adress> #
MartinL 4/12

@Jameo Ele é um caminho absoluto.
Igorw 12/12/12

48
Observe que não funcionará se você remover o protocolo. ou seja, se você tentar o seguinte, não funcionará. git remote add origin user@host:1234/srv/git/example
Bijay Rungta

137

Você precisa editar seu arquivo ~ / .ssh / config. Adicione algo como o seguinte:

Host example.com
    Port 1234

Uma rápida pesquisa no Google mostra alguns recursos diferentes que explicam mais detalhadamente do que eu.


16
Funcionou para mim. Eu gosto mais dessa abordagem do que colocá-la no controle remoto do git. Obrigado! Não é necessário especificar um caminho absoluto dessa maneira.
Michael van Rooijen

Isso funciona muito bem. Também dessa forma, posso ter uma chave específica em vez do id_rsa padrão. Além disso, meu servidor é exigente e, mais ou menos, você precisa corrigi-lo com rapidez suficiente, o que falha se você incluir a senha. Então, eu uso o PasswordAuthentication notambém.
Alexis Wilke

4
É melhor tê-lo no controle remoto do que ocultá-lo no arquivo de configuração como este: quando você tem tudo em um só lugar, nunca se esquece do número de porta diferente e pode simplesmente copiar e colar o URL para qualquer outra pessoa usar.
21414 Marc Marh

11
@ MarcH Na verdade, depende da situação. Eu gosto de usar números de porta aleatórios nas minhas instâncias do VPS. Ter a porta dentro do arquivo de configuração é uma maneira de reter essas informações dos colaboradores (é quando você tem vários controles remotos, o host remoto de implantação é diferente do repositório interno do código-fonte).
Ragunath Jawahar

@RagunathJawahar Eu não acho que o uso de números de porta aleatórios seja um caso de uso muito comum.
21414 Marc Marh

29

A melhor resposta não funciona para mim. Eu precisava ssh://desde o começo.

# 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

Para aqueles que estão editando o ./.git/config

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

11
Perfeito. Uma pergunta, no entanto, como faço isso para submódulos? Não parece funcionar.
M4l490n

10

Em vez de usar o ssh://prefixo do protocolo, você pode continuar usando o formulário de URL convencional para acessar o git sobre SSH, com uma pequena alteração. Como lembrete, o URL convencional é :

git@host:path/to/repo.git

Para especificar uma porta alternativa, coloque colchetes em volta da user@hostpeça, incluindo a porta:

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

Mas se a alteração da porta for apenas temporária, você pode dizer ao git para usar um comando SSH diferente em vez de alterar a URL remota do seu repositório:

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

2
Adicionar os colchetes ao redor do git @ host: port funcionou muito bem para mim. Estou usando o gitlab e nesse servidor requer uma porta não padrão, mas também não posso usar o caminho absoluto para o repositório (não o conheço). Obrigado
Thomas Le

11
Este parece ser o método mais flexível para mim como ele suporta caminhos relativos e não depende de configurações ssh
user2882096
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.