git remote diğer SSH bağlantı noktası ile ekle


336

Git'te, ana makinem farklı bir SSH bağlantı noktası kullandığında nasıl uzak kaynaklı bir sunucu ekleyebilirim?

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

Yanıtlar:


573

Bunu sadece yapabilirsiniz:

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

1234 ssh portu kullanılıyor mu


10
Teşekkürler. Sadece bir tamamlayıcı: yol bölümünde, kullanıcı ana dizinine göreli bir yol değil, mutlak yolu kullanın ...
Snicolas

@Snicolas: Neden göreli bir yol kullanılmayacak?
Hannes

12
@Sincolas Kullanıcıların ana dizininde repo varsa çalışır: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / example.git . btw: git clone --bare <adress>
MartinL

@Jameo O ise mutlak yolu.
igorw

48
Protokolü kaldırırsanız çalışmayacağını unutmayın. yani aşağıdakileri denerseniz, çalışmaz. git remote add origin user@host:1234/srv/git/example
Bijay Rungta

137

~ / .Ssh / config dosyanızı düzenlemeniz gerekir. Aşağıdaki gibi bir şey ekleyin:

Host example.com
    Port 1234

Hızlı bir Google araması, benden daha ayrıntılı olarak açıklayan birkaç farklı kaynak gösterir .


16
Benim için işe yaradı. Bu yaklaşımı git kumandasına yapışmaktan daha çok seviyorum. Teşekkürler! Bu şekilde mutlak bir yol belirtmeye gerek yoktur.
Michael van Rooijen

Harika çalışıyor. Ayrıca bu şekilde varsayılan id_rsa yerine belirli bir anahtar olabilir. Sadece bu da değil, sunucum seçici ve az ya da çok şifrenizi eklerseniz başarısız hemen yeterince doğru olması gerekir. Ben de kullanıyorum PasswordAuthentication no.
Alexis Wilke

4
Uzaktan kumandayı böyle bir yapılandırma dosyasında saklamaktan daha iyidir: tek bir yerde her şeye sahip olduğunuzda, farklı bağlantı noktası numarasını asla unutamazsınız ve URL'yi başkalarının kullanması için kopyalayıp yapıştırabilirsiniz.
MarcH

1
@MarcH Aslında duruma bağlı. VPS örneklerimde rasgele bağlantı noktası numaraları kullanmayı seviyorum. Yapılandırma dosyasının içindeki bağlantı noktasına sahip olmak, bu bilgileri ortak çalışanlardan saklamanın bir yoludur (Bu durumda, birden çok uzaktan kumandanız olduğunda, dağıtım uzak ana makinesi dahili Kaynak Kodu deposundan farklıdır).
Ragunath Jawahar

@RagunathJawahar Rastgele bağlantı noktası numaralarını kullanmanın çok yaygın bir kullanım durumu olduğunu düşünmüyorum.
MarcH

29

En iyi cevap benim için işe yaramıyor. ssh://Baştan beri ihtiyacım vardı .

# 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

Düzenleyenler için ./.git/config

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

1
Mükemmel. Yine de bir soru, bunu alt modüller için nasıl yapabilirim? Çalışmıyor gibi görünüyor.
m4l490n

11

ssh://Protokol önekini kullanmak yerine , SSH üzerinden git'e erişmek için geleneksel URL formunu küçük bir değişiklikle kullanmaya devam edebilirsiniz. Bir hatırlatma olarak, geleneksel URL :

git@host:path/to/repo.git

Alternatif bir bağlantı noktası belirtmek için user@host, bağlantı noktası dahil olmak üzere parçanın etrafına parantez yerleştirin :

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

Ancak bağlantı noktası değişikliği yalnızca geçici ise git'e deponuzun uzak URL'sini değiştirmek yerine farklı bir SSH komutu kullanmasını söyleyebilirsiniz:

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

2
Git @ host: port'un etrafına köşeli parantez eklemek benim için güzel çalıştı. Gitlab kullanıyorum ve bu sunucuda standart olmayan bir bağlantı noktası gerektirir, ancak aynı zamanda repo (bilmiyorum) mutlak yolu kullanamazsınız. Teşekkür ederim
Thomas Le

1
Göreceli yolları desteklediği ve ssh yapılandırmalarına bağlı olmadığı için bu benim için en esnek yöntem gibi görünüyor
user2882096
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.