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 = [email protected]:asdf/asdf.git
James Ward
fonte

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.

daff
fonte
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://[email protected]: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).

Chris Johnsen
fonte
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://[email protected]: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
James Ward
fonte
2

Encontrei este link e, embora tenha sido útil, minha entrada no blog pode ajudar a esclarecê-lo:

https://prestongarrison.com/change-port-git-is-using-for-ssh/

Basicamente, acho muito melhor apenas editar seu arquivo .git / config e fazer as alterações.

Guarnição de Preston
fonte