Birden fazla SSH bağlantısı kullanıyorsanız, her seferinde uzun komutlar yazmak ya da doğru anahtarı manuel olarak seçmek zaman kaybına neden olur. İşte bu noktada devreye .ssh/config dosyası girer. Bu yapılandırma dosyası, SSH bağlantılarını daha verimli, güvenli ve okunabilir hale getirmemizi sağlar.
Bu rehberde SSH Config dosyasının temellerinden başlayarak, ileri seviye kullanım ipuçlarına kadar her şeyi bulacaksınız.
Ayrıca konuya yeni başlayanlar için hazırladığımız MacOS Üzerinde SSH Anahtarı Oluşturma Rehberi yazısına da göz atmanızı öneririm. Bu yazı, SSH key mantığını temelden anlatır ve config dosyasıyla nasıl entegre çalıştığını açıklar.
GitHub ile güvenli bağlantı kurmak isteyenler için ise GitHub SSH Bağlantısı Nasıl Kurulur? başlıklı rehberimiz adım adım yol gösterici olacaktır. Özellikle birden fazla SSH anahtarı kullanıyorsanız, .ssh/config ile GitHub bağlantılarını kolaylaştırmak için bu makaleyi mutlaka inceleyin.
Hazırsanız SSH dünyasını düzenli ve yönetilebilir hale getirmeye başlayalım!
.ssh config Dosyası Nedir?
.ssh/config, terminalden SSH bağlantısı kurarken kullanılacak parametreleri önceden tanımlamanıza olanak tanıyan bir yapılandırma dosyasıdır. Örneğin, bir sunucuya her bağlanışta -i ile özel anahtar belirtmenize gerek kalmaz.
Temel Yapılandırma Örneği
Host sunucum
HostName 123.123.123.123
User root
IdentityFile ~/.ssh/id_rsa_sunucum
Artık terminalde sadece şu komutla bağlanabilirsiniz:
ssh sunucum
Farklı Anahtarları Yönetmek
Birden fazla SSH anahtarı kullandığınızda karışıklık yaşanabilir. .ssh/config sayesinde her bağlantı için doğru anahtarı tanımlayabilirsiniz.
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
Host digitalocean
HostName 192.168.1.10
User root
IdentityFile ~/.ssh/id_rsa_digitalocean
Bağlantı Kısayolları Oluşturmak
Uzun IP adresleri veya farklı portlar kullanıyorsanız, bunlara kısa adlar tanımlayarak bağlanma sürecini hızlandırabilirsiniz.
Sunuculara bağlanırken genellikle şu formatta bir komut kullanırız:
ssh -p 2222 -i ~/.ssh/id_rsa_wolinka root@staging.wolinka.com.tr
Bu komut doğru ama uzun ve tekrar yazmak yorucu olabilir. SSH config dosyası sayesinde bu uzun komutları basitleştirebiliriz.
Neden Kısayol Oluşturalım?
- Daha az yazı yazarız.
- Her bağlantı için doğru port, anahtar, IP bilgilerini hatırlamak zorunda kalmayız.
- Hatalı bağlantı riskini azaltırız.
Nasıl Yapılır?
Ana dizinde ~/.ssh/config dosyasını aç:
nano ~/.ssh/config
ve aşağıdaki gibi bir blok ekle:
Host staging
HostName staging.wolinka.com.tr
Port 2222
User root
IdentityFile ~/.ssh/id_rsa_wolinka
Açıklamalar:
Host staging: Artık bu kısa isimle bağlantı kurabileceğiz.HostName: Gerçek alan adı ya da IP adresi.Port: Varsayılan 22 dışındaki bir port kullanıyorsan buraya yaz.User: Sunucuya hangi kullanıcı adıyla gireceksin?IdentityFile: Hangi özel anahtar kullanılacak?
Artık Ne Oldu?
Artık terminalde sadece şu komutla bağlanabilirsin:
ssh staging
Bütün port, user ve key bilgilerini config dosyası zaten otomatik ekler.
Eğer istersen scp, rsync gibi komutlarda da bu kısayolu kullanabilirsin:
scp dosya.txt staging:/var/www/
ProxyJump ile Dolaylı Bağlantılar
Bazı sunucular doğrudan internet üzerinden erişebilir değildir. Genellikle çok daha güvenli sistemlerde, iç ağda (internal network) bulunan sunuculara ancak bir ara sunucu (jump host veya bastion server olarak da bilinir) aracılığıyla erişim sağlanabilir.
Bu durumda SSH komutları karmaşık hale gelir:
Host ara-sunucu
HostName jump.wolinka.com.tr
User ozlem
IdentityFile ~/.ssh/id_rsa_jump
Host ic-sunucu
HostName 10.0.0.5
User root
IdentityFile ~/.ssh/id_rsa_internal
ProxyJump ara-sunucu
Bu Yapılandırma Ne Sağlar?
- İç sunucuya bağlanmak için tek bir komut yeterlidir:
ssh ic-sunucu
- SSH otomatik olarak önce
ara-sunucuya bağlanır, oradan daic-sunucuya tünel kurar. - Parola girme, port belirtme, karmaşık komut yazma gibi işlerle uğraşmazsın.
Ekstra Bilgi
ProxyJumpyerine eski sistemlerdeProxyCommandda kullanılır amaProxyJumpdaha modern ve bakım dostudur.- İki sunucu arasındaki tünel, SSH tarafından şifrelenmiş bağlantıdır. Yani iç sunucuya ulaşım halen güvenlidir.
- Birden fazla ara sunucu gerekiyorsa,
ProxyJumpşu formatta yazılabilir:
ProxyJump ara1,ara2,ara3
Nerede Kullanılır?
- Şirket ağlarında,
- Yalnızca VPN üzerinden erişilen sistemlerde,
- İçeride yüzlerce sunucu bulunan veri merkezlerinde,
Bu yöntem sayesinde tek bir komutla, birden fazla sunucuya zincirleme erişim sağlayabilir, bağlantılarımızı düzenli ve güvenli tutabiliriz.
Include Direktifi ile Dosya Yönetimi
SSH config dosyası zaman içinde büyüdükçe, yüzlerce sunucu bağlantı tanımıyla karmakarışık hale gelebilir. Bu durumda yapıyı modüler hale getirmek için Include direktifi kullanılabilir.
Bu direktif sayesinde config dosyasını parçalara ayırabilir, her bir sunucu grubu için ayrı bir dosya oluşturabiliriz.
Nasıl Kullanılır?
Ana ~/.ssh/config dosyanıza şu satırı ekleyin:
Include ~/.ssh/config.d/*
Bu ayar sayesinde ~/.ssh/config.d/ dizini altındaki tüm dosyalar otomatik olarak çekilir.
Önemli Not: Bu satırı config dosyasının en üstüne yazmak daha sağlıklıdır, çünkü SSH istemcisi dosyayı yukarıdan aşağıya doğru okur.
Örnek Yapı
~/.ssh/config.d/github.conf~/.ssh/config.d/clients.conf~/.ssh/config.d/internal.conf
Her dosya kendi bağlantı tanımlarını içerir:
# ~/.ssh/config.d/github.conf
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
Fiziksel Dosyaları Oluştur
Config dosyasına Include satırını ekledikten sonra, bu yapının etkili çalışabilmesi için fiziksel olarak klasör ve dosyaları da oluşturman gerekir.
1. config.d klasörü:
mkdir -p ~/.ssh/config.d
2. Her grup için dosya oluştur:
touch ~/.ssh/config.d/github.conf
3. Dosya izinlerini düzenle:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/config.d/*
4. Yapılandırmayı Test Edin
ssh -T git@github.com
veya
ssh github.com
işleminin sorunsuz çalışıp çalışmadığını kontrol edin.
Avantajları
- Config dosyası daha okunabilir olur.
- Hata ayıklamak kolaylaşır.
- Ekip çalışmalarında belirli sunucu gruplarını paylaşmak mümkün olur.
- Genişleyen sistemlerde yönetim kolaylığı sağlar.
Include ile modüler SSH yapısı oluşturarak hem düzeni hem de yönetilebilirliği artırabilirsiniz.
Hatalardan Kaçınmak İçin Ekstra Öneriler
- Dosya izinlerini kontrol edin:
chmod 600 ~/.ssh/config - Host adlarını kısa ve anlamlı tutun.
- Her
Hostbloğuna açıklayıcı yorumlar ekleyin. - Gerekirse
ControlMasterveControlPathgibi gelişmiş seçenekleri kullanın (ağ performansını artırır).
Sıkça Sorulan Sorular
Birden fazla GitHub hesabım varsa ne yapmalıyım?
Farklı Host tanımları yaparak her birine özel anahtar atayabilirsiniz.
SSH config dosyasını Windows’ta kullanabilir miyim?
Evet, WSL veya Git Bash gibi terminal çözümleri üzerinden kullanabilirsiniz.
Her terminal açıldığında anahtarları yeniden mi eklemeliyim?
Hayır, .ssh/config ve SSH Agent birlikte çalıştığında bunu otomatik yapar.
Sonuç
SSH config dosyasını etkili kullanmak, hem zamandan tasarruf sağlar hem de hata riskini azaltır. Özellikle geliştiriciler, sistem yöneticileri ve WordPress uzmanları için vazgeçilmez bir araçtır. Siz de bu ipuçlarıyla SSH bağlantılarınızı profesyonel seviyeye taşıyabilirsiniz.
SSH ile ilgili daha fazla destek ya da kurumsal düzey danışmanlık hizmeti almak isterseniz, iletişim sayfamızdan bize ulaşabilirsiniz 👉 https://wolinka.com.tr/iletisim/