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
Juan Pablo
fonte

Respostas:

573

Você pode fazer isso:

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

1234 é a porta ssh sendo usada

igorw
fonte
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.

borda
fonte
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 [email protected]:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://[email protected]:10000/aaa/bbbb/ccc.git
kujiy
fonte
17

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

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://[email protected]:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Evan Carroll
fonte
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
Konrad Rudolph
fonte
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