Especifique a porta SSH para Git


17

Eu uso uma porta ssh não padrão (1234) para a maioria dos servidores aos quais me conecto. Então, no meu arquivo de configuração ssh, tenho:

Port 1234

Mas o github.com usa a porta 22. Quando tento conectar-me ao github, ele obviamente tenta usar a porta 1234. No momento, tenho que editar minha configuração do ssh para que as coisas funcionem.

Aqui está um trecho da minha configuração do git:

[remote "origin"]
        url = git@github.com:asdf/asdf.git

Respostas:


26

Basta dar uma olhada em como configurar seu arquivo ~ / .ssh / config corretamente (man 5 ssh_config). Você pode especificar configurações diferentes para hosts diferentes facilmente. Para resolver seu problema, você definiria

Host github.com
Port 22
Host *
Port 1234

Dê uma olhada na página de manual do ssh_config, que explica tudo o que você precisa saber nas primeiras páginas.


24

A configuração de uma seção ~/.ssh/configé uma boa solução, mas pode ser útil conhecer outro método.

A sintaxe comum do tipo scpuser@host:path não tem lugar para uma porta, mas o Git também suporta um ssh:esquema de URL que pode ser usado para especificar a porta:

ssh://git@github.com:22/asdf/asdf.git

Embora um ssh:URL suporte a especificação de porta, ele não suporta caminhos relativos (por exemplo, não há equivalente direto à sintaxe semelhante a scp de user@host:pathonde pathnão começa com uma barra).

O GitHub trata caminhos relativos e absolutos de forma idêntica, portanto funciona para eles, mas pode não funcionar para todos os repositórios Git baseados em SSH. Para hospedagem simples baseada em SSH, pode ser necessário inserir /home/username/ou /Users/username/ao alternar de caminhos relativos para caminhos absolutos. Alguns sistemas de hospedagem podem não lidar com caminhos absolutos (embora eu tenderia a chamar essa falta de suporte de bug).


Obrigado Chris. Eu gosto mais desse caminho porque ele não requer mexer na minha configuração ssh. Obrigado!
James Ward

11
FYI, se o servidor tem um "nu" repo em seguida, a seqüência de conexão ficaria mais parecido com ssh://git@github.com:22/asdf/asdf(sem o .git)
Xeoncross

3

(Adore quando encontrar a resposta logo após perguntar.)

Modifiquei minha configuração ssh para especificar a porta para cada host em vez de ser uma configuração global:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22

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.