Socks Vekil Sunucu (Proxy) ile Git Kullanımı

Öncelikle yazımdaki araya sıkışıp kalan İngilizce kısımlar için anlayış göstereceğinizi umarak başlamak istiyorum.  Bu yazımda, socks vekil sunucu kullanarak uzaktaki bir git sunucusuna (ssh protokolünü kullanarak) bağlanmak için izlediğim birkaç küçük adımı paylaşmak istiyorum.

Gelelim asıl konumuza. Vekil sunucu olarak “ssh-tunneling” [2] yardımıyla kendi yerel makinamı kullanmaktayım ve hedef git sunucu olarak github.com’u ele almak istiyorum. İnternette `git clone user@git.example.com:repo.git` şeklinde gördüğümüz ifadeler sadece ssh protokolünün kısa yazımıdır ve `ssh://user@git.example.com:repo.git` ifadesi ile aynı anlama gelmektedir [1].

Örnek olarak aldığımız github.com adresi için ~/.ssh/config dosyasına birkaç ekleme yapmamız gerekiyor. Kendi kullanıcı dizininizde bu dosya mevcut değilse oluşturup düzenlemeye devam edebilirsiniz. ~/.ssh/config dosyasına aşağıdakine benzer şekilde eklemelerinizi yapabilirsiniz.

Host github.com
    User                    git
    ProxyCommand            nc -x localhost:1080 %h %p

İlk olarak burada kullandığımız `nc` (netcat) aracı sisteminizde yoksa bunu kurmanız gerekmekte. Kendi sistemim Debian olduğundan dolayı aşağıdaki komutla bu paketi kuruyorum.

apt-get install netcat-openbsd

Daha sonra, Host ile belirttiğimiz alana git sunucumuzun adresini giriyoruz (github.com yerine kendi sunucumuz olabilir). User alanı ise git sunucusu üzerinde size açılan kullanıcı adı olacaktır. ProxyCommand bağlantı sırasında vekil sunucumuzu kullanmamızı yarayacak temel alanımızdır. `-x` parametresi ile vekil sunucu adresimizi ve port numarasını belirttikten sonra `%h` ile hedef adresimizi (git sunucumuzu) ve `%p` hedef portumuzu belirtmiş oluyoruz.

Ayrıca

Port 444

alanı ile öntanımlı 22 yerine başka bir port kullanmamız (444 gibi) mümkün. Parola yerine ortak anahtar kullanarak giriş yapmak istiyorsak aşağıdaki eklemeyi (github.key yerine tabi ki kendi ortak anahtar dosyamızı belirterek) yaparak bu sorunu da halletmemiz mümkün.

IdentityFile ~/.ssh/github.key

Tüm bu adımlardan sonra uzaktaki git sunucumuza vekil sunucumuz üzerinden bağlanmaya hazırız. Yazının başında belirttiğim gibi bu adımlar ssh ile yapılan bağantıları kapsamaktadır. HTTP(S) için [3] adresindeki bilgilere göz atmanızı öneririm. Yazımın işinize yaraması dileğiyle.

[1] http://git-scm.com/book/tr/v1/Uzak-Serverda-Git-Protokoller

[2] http://www.revsys.com/writings/quicktips/ssh-tunnel.html

[3] http://cms-sw.github.io/tutorial-proxy.html


Tagged: lkd

31 Aralık 2014

Posted In: lkd

WP Twitter Auto Publish Powered By : XYZScripts.com