Özel SSH Bağlantı Noktasında Git


150

VPS sağlayıcım, SSH bağlantı noktamı varsayılan olarak kendisine atadıkları özel bağlantı noktası numarasına bırakmamı tavsiye ediyor (22 değil). Mesele şu ki, bir uzaktan yapılandırma oluştururken bağlantı noktası numarasını verebileceğimi bildiğim halde, git klonu yaparken aynısını yapamıyorum gibi görünüyor. Gitolite kullanıyorum, bu yüzden klon komutları şöyle görünüyor:

git clone git@mydomain.com:gitolite-admin

Bunu özel ssh bağlantı noktası numarasını kullanmaya dönüştürmenin bir yolu var mı?

Ayrıca cygwin'i pencerelerde çalıştırdığımı da belirtmeliyim. Özel bağlantı noktasını ~/.ssh/configdosyaya eklemeyi söyleyen birden çok yer gördüm.

Host mydomain.com
    Port 12345

ancak cygwin'de bu dosya mevcut görünmüyor.


8
Dosyanın yol adı, kullanıcınızın ev dizininde .ssh/config(değil conf). Temel işlemler için gerekli değildir ve bu nedenle varsayılan olarak mevcut değildir. Onu yaratmanız gerekecek. vim ~/.ssh/configAçmak / oluşturmak için deneyin (veya tercih ettiğiniz, kurulu metin düzenleyiciyi kullanın).
Chris Johnsen


Windows'ta okumak /Users/USERX/.ssh/configiçin HOMEyerel ortamınızı olarak ayarlamanız gerekir /Users/USERX.
kenorb

Yanıtlar:


339
git clone ssh://git@mydomain.com:[port]/gitolite-admin

Bağlantı noktası numarasının köşeli parantezler olmadan orada olması gerektiğini unutmayın: []


Bu işe yarıyor, ancak Chris Johnsen düzeltmesi özel bağlantı noktası numaralarını kullanırken temiz bir url'ye izin veriyor
ryanzec

6
:-) Bana sorarsan, git URL sözdizimi temiz değil ve yukarıdakiler daha normalleştirildi
Christo,

Verdiğiniz sözdiziminin daha açıklayıcı olduğunu, ancak özel bağlantı noktası numarasını eklemeyi hatırlamak zorunda kalmanın can sıkıcı olduğunu kabul ediyorum. Bu bağlantı noktası numarasını yapılandırmak ve sonra bunu hatırlamak zorunda kalmamak biraz daha kolay ama her biri için (bu yüzden her iki şekilde de yapılabilir) :)
ryanzec

51
Protokolü kaldırırsanız çalışmayacağını unutmayın. yani aşağıdakileri denerseniz işe yaramayacaktır. git clone git@mydomain.com:[port]/gitolite-admin
Bijay Rungta

1
plink ile Windows'ta, çalışma sözdizimi şöyle görünüyorgit clone ssh://git@mydomain.com:port/home/user/gitolite-admin
Roman Plášil

20

Yukarıdaki cevaplar güzel ve harika, ancak benim gibi yeni git kullanıcıları için net değil. Biraz araştırdıktan sonra, bu yeni cevabı sunuyorum.

1 ssh yapılandırma dosyası yolundaki sorun nedir?

Yapılandırma dosyası yoksa, bir tane oluşturabilirsiniz. portYapılandırma dosyasının yanı sıra başka ssh yapılandırma seçenekleri de içerebilir: user IdentityFilevb. Yapılandırma dosyası

Host mydomain.com
    User git
    Port 12345

Linux çalıştırıyorsanız, yapılandırma dosyasının katı izinlere sahip olmasına dikkat edin: kullanıcı için okuma / yazma ve başkaları tarafından erişilemez

2 ssh url yolu ne olacak?

Harika, bilmemiz gereken tek şey git'te ssh url'si için iki sözdizimi olduğudur.

  • standart sözdizimi ssh://[user@]host.xz[:port]/path/to/repo.git/
  • scp gibi sözdizimi [user@]host.xz:path/to/repo.git/

Varsayılan olarak Gitlab ve Github scp benzeri sözdizimi url'sini gösterecektir ve biz özel ssh portunu veremeyiz. Bu nedenle, ssh bağlantı noktasını değiştirmek için standart sözdizimini kullanmamız gerekir


14

Ana dizininizden (herhangi bir UNIX üzerinde) göreceli bir yol istediğinizde, bu garip sözdizimini kullanırsınız:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo

Örnek için, repo ise /home/jack/projects/jillwebsunucuda jill.comve siz giriş yaptığını jackile sshdport 4242 tarihinde dinleme:

ssh://jack@jill.com:4242/~/projects/jillweb

Ve olarak oturum açarken jill(dosya izinleriniz olduğunu varsayarak):

ssh://jill@jill.com:4242/~jack/projects/jillweb


dostum, bu bir süreliğine şaşkına dönmüştü ve tam da bilmem gereken şey buydu. bunun nerede belgelendiğini biliyor musunuz?
Shaun Wilson

@Shaun Wilson Üzgünüm, tam olarak hatırlamıyorum. Ama cevabı bulmam biraz zaman aldı, bu yüzden burada paylaşmam gerektiğini düşündüm, çünkü bu çıkmazlarımdan biriydi.
Daniel Santos

1
Teşekkürler! Özellikle paylaşılan bir barındırma planındaysanız ~ [kullanıcı] kısmı önemlidir. Bu, depomu klonlamama yardımcı oldu.
Jim Wilson

2
@ShaunWilson yol belirtimi standart bir UNIX yoludur. Bir UNIX sisteminde oturum açtıysanız ~, ev dizini için bir kısaltmadır, hem çok fazla yazmayı kaydetmek hem de ana dizin standart olmayan yerlerde bulunabilir. Yukarıdakiler bir Windows sunucusunda çalışmayabilir.
Samuel Åslund

@Samuel Åslund Teşekkürler, cevabımı güncelledim. Sık sık Windows'u unutuyorum çünkü, ... yapışkan olmak istemem, ama kıyaslandığında korkunç. Ne kadar az olursa olsun, bu önemli bir ayrımdır.
Daniel Santos

10

(Güncelleme: birkaç yıl sonra Google ve Qwant "havayolları", "git varsayılan olmayan ssh bağlantı noktası" aradığımda beni buraya göndermeye devam ediyor) Yeni git sürümlerinde muhtemelen daha iyi bir yol GIT_SSH_COMMAND ENV.VAR gibi kullanmaktır:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

Bu, diğer uygun ssh seçeneklerine (bağlantı noktası, özel anahtar, IPv6, PKCS # 11 aygıtı, ...) izin verme ek avantajına sahiptir.

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.