{"id":32988,"date":"2025-10-28T06:41:00","date_gmt":"2025-10-28T03:41:00","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32988"},"modified":"2025-10-28T06:41:00","modified_gmt":"2025-10-28T03:41:00","slug":"ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/","title":{"rendered":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>SSH (Secure Shell), g\u00fcn\u00fcm\u00fczdeki sistem y\u00f6neticileri, geli\u015ftiriciler ve hatta s\u0131radan kullan\u0131c\u0131lar i\u00e7in uzaktaki sunuculara g\u00fcvenli bir \u015fekilde eri\u015fimin temelini olu\u015fturan vazge\u00e7ilmez bir protokold\u00fcr. Dosya transferinden (SCP\/SFTP) komut \u00e7al\u0131\u015ft\u0131rmaya kadar bir\u00e7ok i\u015flemi \u015fifreli bir kanal \u00fczerinden ger\u00e7ekle\u015ftirerek veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ve gizlili\u011fini sa\u011flar. Ancak, varsay\u0131lan SSH ayarlar\u0131 her zaman her senaryo i\u00e7in en uygun veya en verimli olmayabilir. Birden fazla sunucuyla \u00e7al\u0131\u015f\u0131rken, farkl\u0131 kimlik do\u011frulama y\u00f6ntemleri, \u00f6zel portlar, proxy sunucular\u0131 veya karma\u015f\u0131k t\u00fcnelleme ihtiya\u00e7lar\u0131 ortaya \u00e7\u0131kabilir. \u0130\u015fte tam bu noktada, SSH istemcinizin \u00f6zel ba\u011flant\u0131 se\u00e7eneklerini yap\u0131land\u0131rma yetene\u011fi devreye girer.<\/p>\n<p>Bu kapsaml\u0131 rehberde, SSH istemcinizin davran\u0131\u015f\u0131n\u0131 nas\u0131l \u00f6zelle\u015ftirebilece\u011finizi, ba\u011flant\u0131lar\u0131n\u0131z\u0131 nas\u0131l daha g\u00fcvenli, daha h\u0131zl\u0131 ve daha pratik hale getirebilece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz. Odak noktam\u0131z, Linux ve macOS sistemlerinde yayg\u0131n olarak kullan\u0131lan <code>~\/.ssh\/config<\/code> dosyas\u0131 olacak, ancak bahsedilen prensipler Windows \u00fczerindeki SSH istemcileri (\u00f6rne\u011fin, OpenSSH for Windows veya PuTTY gibi ara\u00e7lar) i\u00e7in de uyarlanabilir. Bu yap\u0131land\u0131rma dosyas\u0131, uzaktaki sunucularla ba\u011flant\u0131 kurarken her seferinde uzun komutlar yazma zahmetinden kurtararak, tekrarlayan g\u00f6revleri otomatikle\u015ftirmenize ve i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131rman\u0131za olanak tan\u0131r. Ayr\u0131ca, g\u00fcvenlik politikalar\u0131n\u0131 merkezi bir yerden y\u00f6neterek olas\u0131 hatalar\u0131 minimize etmenize yard\u0131mc\u0131 olur.<\/p>\n<h2>Temel SSH Kavramlar\u0131<\/h2>\n<p>\u00d6zel yap\u0131land\u0131rma se\u00e7eneklerine dalmadan \u00f6nce, SSH&#8217;nin alt\u0131nda yatan baz\u0131 temel kavramlar\u0131 anlamak, yap\u0131land\u0131rmalar\u0131n neden ve nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kavramak a\u00e7\u0131s\u0131ndan faydal\u0131 olacakt\u0131r.<\/p>\n<h3>SSH Protokol\u00fc<\/h3>\n<p>SSH, istemci-sunucu mimarisine dayal\u0131 bir a\u011f protokol\u00fcd\u00fcr. Bir SSH istemcisi, uzaktaki bir SSH sunucusuna ba\u011flanarak g\u00fcvenli bir ileti\u015fim kanal\u0131 olu\u015fturur. Bu kanal, ba\u011flant\u0131 s\u0131ras\u0131nda g\u00f6nderilen t\u00fcm verileri \u015fifreler, b\u00f6ylece k\u00f6t\u00fc niyetli ki\u015filer taraf\u0131ndan dinlenmesini veya de\u011fi\u015ftirilmesini engeller. Protokol, kimlik do\u011frulama, komut y\u00fcr\u00fctme ve veri aktar\u0131m\u0131 gibi \u00e7e\u015fitli hizmetler sunar.<\/p>\n<h3>Anahtar Tabanl\u0131 Kimlik Do\u011frulama<\/h3>\n<p>Parola tabanl\u0131 kimlik do\u011frulaman\u0131n aksine, anahtar tabanl\u0131 kimlik do\u011frulama, iki anahtardan olu\u015fan bir \u00e7ift kullan\u0131r: genel (public) anahtar ve \u00f6zel (private) anahtar. Genel anahtar, uzaktaki sunucuya (<code>~\/.ssh\/authorized_keys<\/code> dosyas\u0131na) yerle\u015ftirilirken, \u00f6zel anahtar yaln\u0131zca istemci makinesinde saklan\u0131r ve asla payla\u015f\u0131lmaz. Bir istemci sunucuya ba\u011flanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, sunucu istemcinin \u00f6zel anahtar\u0131na sahip oldu\u011funu kriptografik bir meydan okuma ile do\u011frular. Bu y\u00f6ntem, parolalara g\u00f6re \u00e7ok daha g\u00fcvenli ve otomatiktir.<\/p>\n<h3>Parola Tabanl\u0131 Kimlik Do\u011frulama<\/h3>\n<p>SSH&#8217;nin en basit kimlik do\u011frulama y\u00f6ntemidir. Kullan\u0131c\u0131, uzaktaki sunucuya ba\u011flan\u0131rken kullan\u0131c\u0131 ad\u0131n\u0131 ve parolas\u0131n\u0131 girer. G\u00fcvenlik a\u00e7\u0131s\u0131ndan anahtar tabanl\u0131 kimlik do\u011frulamaya g\u00f6re daha zay\u0131ft\u0131r, \u00e7\u00fcnk\u00fc parolalar brute-force sald\u0131r\u0131lar\u0131na veya zay\u0131f parola politikalar\u0131na kar\u015f\u0131 savunmas\u0131z olabilir. Ancak, h\u0131zl\u0131 ve tek seferlik ba\u011flant\u0131lar i\u00e7in hala kullan\u0131lmaktad\u0131r.<\/p>\n<h3>SSH \u0130stemcisi ve Sunucusu \u0130li\u015fkisi<\/h3>\n<p>SSH istemcisi (genellikle <code>ssh<\/code> komutu), kullan\u0131c\u0131n\u0131n yerel makinesinde \u00e7al\u0131\u015f\u0131r ve uzaktaki SSH sunucusuna ba\u011flanma iste\u011fi g\u00f6nderir. SSH sunucusu (genellikle <code>sshd<\/code> veya OpenSSH Daemon), uzaktaki makinede \u00e7al\u0131\u015f\u0131r ve gelen ba\u011flant\u0131 isteklerini dinler. Ba\u011flant\u0131 kuruldu\u011funda, sunucu istemcinin kimli\u011fini do\u011frular ve yetkilendirme ba\u015far\u0131l\u0131 olursa, \u015fifreli bir oturum ba\u015flat\u0131r.<\/p>\n<h2><code>~\/.ssh\/config<\/code> Dosyas\u0131n\u0131n G\u00fcc\u00fc<\/h2>\n<p><code>~\/.ssh\/config<\/code> dosyas\u0131, SSH istemcinizin davran\u0131\u015f\u0131n\u0131 \u00f6zelle\u015ftirmek i\u00e7in merkezi bir yap\u0131land\u0131rma dosyas\u0131d\u0131r. Bu dosya, belirli sunuculara veya sunucu gruplar\u0131na \u00f6zg\u00fc ayarlar\u0131 depolaman\u0131za olanak tan\u0131r, b\u00f6ylece her ba\u011flant\u0131 i\u00e7in uzun komut sat\u0131r\u0131 se\u00e7enekleri belirtmek zorunda kalmazs\u0131n\u0131z.<\/p>\n<h3>Nedir?<\/h3>\n<p><code>~\/.ssh\/config<\/code> dosyas\u0131, SSH istemcisinin (genellikle <code>ssh<\/code> komutu) kullanaca\u011f\u0131 ba\u011flant\u0131 ayarlar\u0131n\u0131 tan\u0131mlayan d\u00fcz metin tabanl\u0131 bir dosyad\u0131r. Bu dosya, her sunucu i\u00e7in ayr\u0131 bir &#8220;Host&#8221; blo\u011fu alt\u0131nda, kullan\u0131c\u0131 ad\u0131, port numaras\u0131, kimlik do\u011frulama anahtar\u0131 yolu, proxy ayarlar\u0131 gibi bir\u00e7ok parametreyi belirlemenizi sa\u011flar.<\/p>\n<h3>Nerede Bulunur?<\/h3>\n<p>Linux ve macOS sistemlerinde, bu dosya kullan\u0131c\u0131n\u0131n ana dizinindeki <code>.ssh<\/code> alt dizininde bulunur: <code>~\/.ssh\/config<\/code>.<br \/>\nWindows&#8217;ta OpenSSH istemcisi kullan\u0131l\u0131yorsa, benzer \u015fekilde <code>C:\\Users\\Kullan\u0131c\u0131Ad\u0131\\.ssh\\config<\/code> yolunda bulunabilir. PuTTY gibi ara\u00e7lar ise kendi GUI tabanl\u0131 yap\u0131land\u0131rma depolama mekanizmalar\u0131na sahiptir.<\/p>\n<h3>Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>E\u011fer <code>~\/.ssh\/config<\/code> dosyas\u0131 mevcut de\u011filse, basit\u00e7e bir metin d\u00fczenleyici ile olu\u015fturulabilir:<\/p>\n<pre><code class=\"language-bash\">touch ~\/.ssh\/config<\/code><\/pre>\n<p>Ard\u0131ndan, dosyay\u0131 d\u00fczenlemek i\u00e7in favori metin d\u00fczenleyicinizi kullanabilirsiniz (\u00f6rne\u011fin, <code>nano ~\/.ssh\/config<\/code> veya <code>vi ~\/.ssh\/config<\/code>).<\/p>\n<h3>Dosya \u0130zinleri<\/h3>\n<p>G\u00fcvenlik a\u00e7\u0131s\u0131ndan, <code>~\/.ssh\/config<\/code> dosyas\u0131n\u0131n izinleri \u00e7ok \u00f6nemlidir. Sadece dosyan\u0131n sahibi taraf\u0131ndan okunabilir ve yaz\u0131labilir olmal\u0131d\u0131r. Di\u011fer kullan\u0131c\u0131lar\u0131n bu dosyaya eri\u015fimi olmamal\u0131d\u0131r. Do\u011fru izinleri ayarlamak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanmal\u0131s\u0131n\u0131z:<\/p>\n<pre><code class=\"language-bash\">chmod 600 ~\/.ssh\/config<\/code><\/pre>\n<p>Bu, dosyan\u0131n yaln\u0131zca size ait oldu\u011funu ve ba\u015fkalar\u0131n\u0131n \u00f6zel yap\u0131land\u0131rma bilgilerinizi okuyamayaca\u011f\u0131n\u0131 veya de\u011fi\u015ftiremeyece\u011fini garanti eder. Yanl\u0131\u015f izinler, SSH istemcisinin dosyay\u0131 yok saymas\u0131na veya g\u00fcvenlik uyar\u0131lar\u0131 vermesine neden olabilir.<\/p>\n<h2>Temel Yap\u0131land\u0131rma Bloklar\u0131<\/h2>\n<p><code>~\/.ssh\/config<\/code> dosyas\u0131ndaki her bir yap\u0131land\u0131rma blo\u011fu, bir <code>Host<\/code> anahtar kelimesiyle ba\u015flar ve bu host i\u00e7in ge\u00e7erli olacak \u00e7e\u015fitli se\u00e7enekleri i\u00e7erir.<\/p>\n<h3>Host Anahtar Kelimesi<\/h3>\n<p><code>Host<\/code> anahtar kelimesi, bir sunucu veya sunucu grubuna at\u0131fta bulunmak i\u00e7in bir takma ad tan\u0131mlar. SSH komutunu \u00e7al\u0131\u015ft\u0131r\u0131rken bu takma ad\u0131 kullanarak ilgili yap\u0131land\u0131rma ayarlar\u0131n\u0131n otomatik olarak uygulanmas\u0131n\u0131 sa\u011flars\u0131n\u0131z.<\/p>\n<pre><code class=\"language-\">Host my_server\n    # Bu host i\u00e7in yap\u0131land\u0131rma ayarlar\u0131<\/code><\/pre>\n<p>Bir joker karakter (<code>*<\/code>) kullanarak t\u00fcm hostlar i\u00e7in varsay\u0131lan ayarlar\u0131 da belirleyebilirsiniz:<\/p>\n<pre><code class=\"language-\">Host *\n    # T\u00fcm hostlar i\u00e7in varsay\u0131lan ayarlar<\/code><\/pre>\n<h3>HostName Anahtar Kelimesi<\/h3>\n<p><code>HostName<\/code>, ba\u011flan\u0131lacak uzaktaki sunucunun ger\u00e7ek IP adresini veya tam nitelikli alan ad\u0131n\u0131 (FQDN) belirtir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    HostName 192.168.1.100<\/code><\/pre>\n<p>veya<\/p>\n<pre><code class=\"language-\">Host my_server\n    HostName example.com<\/code><\/pre>\n<h3>User Anahtar Kelimesi<\/h3>\n<p><code>User<\/code>, uzaktaki sunucuda oturum a\u00e7mak i\u00e7in kullan\u0131lacak kullan\u0131c\u0131 ad\u0131n\u0131 belirtir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    User admin<\/code><\/pre>\n<p>Bu ayar sayesinde <code>ssh my_server<\/code> komutu <code>ssh admin@example.com<\/code> komutu gibi davran\u0131r.<\/p>\n<h3>Port Anahtar Kelimesi<\/h3>\n<p><code>Port<\/code>, SSH sunucusunun dinledi\u011fi standart olmayan port numaras\u0131n\u0131 belirtir. Varsay\u0131lan SSH portu 22&#8217;dir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    Port 2222<\/code><\/pre>\n<h3>IdentityFile Anahtar Kelimesi<\/h3>\n<p><code>IdentityFile<\/code>, anahtar tabanl\u0131 kimlik do\u011frulama i\u00e7in kullan\u0131lacak \u00f6zel anahtar dosyas\u0131n\u0131n yolunu belirtir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    IdentityFile ~\/.ssh\/id_rsa_my_server<\/code><\/pre>\n<p>Birden fazla anahtar kullanman\u0131z gerekiyorsa, her birini ayr\u0131 bir <code>IdentityFile<\/code> sat\u0131r\u0131nda belirtebilirsiniz.<\/p>\n<h3>IdentitiesOnly Anahtar Kelimesi<\/h3>\n<p><code>IdentitiesOnly<\/code>, SSH istemcisini, bu belirli ba\u011flant\u0131 i\u00e7in yaln\u0131zca <code>IdentityFile<\/code> ile belirtilen kimlik dosyalar\u0131n\u0131 kullanmaya zorlar. Bu, istemcinin SSH agent&#8217;\u0131nda veya varsay\u0131lan yollarda bulunan di\u011fer anahtarlar\u0131 denemesini engeller ve ba\u011flant\u0131 s\u00fcrecini h\u0131zland\u0131rabilir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    IdentityFile ~\/.ssh\/id_rsa_my_server\n    IdentitiesOnly yes<\/code><\/pre>\n<h3>LogLevel Anahtar Kelimesi<\/h3>\n<p><code>LogLevel<\/code>, SSH istemcisinin \u00e7\u0131kt\u0131s\u0131n\u0131n ayr\u0131nt\u0131 d\u00fczeyini kontrol eder. Hata ay\u0131klama (debugging) i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r. Olas\u0131 de\u011ferler: <code>QUIET<\/code>, <code>FATAL<\/code>, <code>ERROR<\/code>, <code>WARNING<\/code>, <code>INFO<\/code>, <code>VERBOSE<\/code>, <code>DEBUG<\/code>, <code>DEBUG1<\/code>, <code>DEBUG2<\/code>, <code>DEBUG3<\/code>.<\/p>\n<pre><code class=\"language-\">Host my_server\n    LogLevel VERBOSE<\/code><\/pre>\n<p><code>ssh -v<\/code> komutuna e\u015fde\u011ferdir. <code>DEBUG3<\/code> en ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131y\u0131 sa\u011flar.<\/p>\n<h2>Geli\u015fmi\u015f Yap\u0131land\u0131rma Se\u00e7enekleri<\/h2>\n<p>SSH istemcinizin yetenekleri temel ba\u011flant\u0131 ayarlar\u0131n\u0131n \u00e7ok \u00f6tesine ge\u00e7er. Geli\u015fmi\u015f se\u00e7enekler, ba\u011flant\u0131lar\u0131n\u0131z\u0131 daha sa\u011flam, daha g\u00fcvenli ve daha esnek hale getirmenizi sa\u011flar.<\/p>\n<h3>KeepAlive ve Ba\u011flant\u0131 S\u00fcreklili\u011fi<\/h3>\n<p>Uzun s\u00fcreli veya bo\u015fta kalan SSH oturumlar\u0131n\u0131n kendili\u011finden kapanmas\u0131n\u0131 \u00f6nlemek i\u00e7in &#8220;keep-alive&#8221; mekanizmalar\u0131n\u0131 yap\u0131land\u0131rabilirsiniz.<\/p>\n<h4>ServerAliveInterval<\/h4>\n<p>Bu se\u00e7enek, SSH istemcisinin uzaktaki sunucuya her X saniyede bir &#8220;keep-alive&#8221; mesaj\u0131 g\u00f6ndermesini sa\u011flar. Bu, a\u011fdaki g\u00fcvenlik duvarlar\u0131n\u0131n veya NAT cihazlar\u0131n\u0131n bo\u015fta kalan ba\u011flant\u0131lar\u0131 kesmesini engeller.<\/p>\n<pre><code class=\"language-\">Host my_server\n    ServerAliveInterval 60  # Her 60 saniyede bir keep-alive mesaj\u0131 g\u00f6nder<\/code><\/pre>\n<h4>ServerAliveCountMax<\/h4>\n<p><code>ServerAliveInterval<\/code> ile belirtilen s\u00fcre i\u00e7inde sunucudan yan\u0131t al\u0131namazsa, istemci bu mesajlar\u0131 <code>ServerAliveCountMax<\/code> kez daha dener. Bu deneme say\u0131s\u0131 a\u015f\u0131ld\u0131\u011f\u0131nda ba\u011flant\u0131 kesilir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    ServerAliveInterval 60\n    ServerAliveCountMax 3   # 3 kez yan\u0131t al\u0131namazsa ba\u011flant\u0131y\u0131 kes<\/code><\/pre>\n<p>Bu iki ayar birlikte, bir ba\u011flant\u0131n\u0131n ger\u00e7ekten kesilip kesilmedi\u011fini veya sadece bo\u015fta kald\u0131\u011f\u0131 i\u00e7in mi kapand\u0131\u011f\u0131n\u0131 anlamaya yard\u0131mc\u0131 olur.<\/p>\n<h4>TCPKeepAlive<\/h4>\n<p>Bu se\u00e7enek, i\u015fletim sistemi d\u00fczeyindeki TCP keep-alive mekanizmas\u0131n\u0131 etkinle\u015ftirir. SSH&#8217;nin kendi <code>ServerAliveInterval<\/code>&#8216;\u0131ndan farkl\u0131d\u0131r ve alt seviyede \u00e7al\u0131\u015f\u0131r. Varsay\u0131lan olarak <code>yes<\/code>&#8216;tir.<\/p>\n<pre><code class=\"language-\">Host my_server\n    TCPKeepAlive yes<\/code><\/pre>\n<h3>Proxy ve T\u00fcnelleme<\/h3>\n<p>A\u011f topolojileri karma\u015f\u0131kla\u015ft\u0131k\u00e7a, do\u011frudan eri\u015filemeyen sunuculara proxy&#8217;ler veya jump host&#8217;lar arac\u0131l\u0131\u011f\u0131yla ba\u011flanmak gerekebilir. SSH, bu senaryolar i\u00e7in g\u00fc\u00e7l\u00fc t\u00fcnelleme yetenekleri sunar.<\/p>\n<h4>ProxyJump<\/h4>\n<p><code>ProxyJump<\/code> (veya k\u0131sa formu <code>-J<\/code>), bir veya daha fazla ara sunucu (jump host veya bastion host) \u00fczerinden nihai hedefe atlaman\u0131z\u0131 sa\u011flar. Bu, do\u011frudan eri\u015filemeyen i\u00e7 a\u011flardaki sunuculara ula\u015fmak i\u00e7in idealdir.<\/p>\n<pre><code class=\"language-\">Host internal_server\n    HostName 10.0.0.5\n    User devuser\n    ProxyJump bastion_host\n\nHost bastion_host\n    HostName bastion.example.com\n    User admin\n    IdentityFile ~\/.ssh\/id_rsa_bastion<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>ssh internal_server<\/code> komutu \u00f6nce <code>bastion_host<\/code>&#8216;a ba\u011flan\u0131r, ard\u0131ndan <code>internal_server<\/code>&#8216;a atlar.<\/p>\n<h4>LocalForward<\/h4>\n<p><code>LocalForward<\/code> (veya <code>-L<\/code>), yerel bir portu uzaktaki bir sunucu \u00fczerindeki ba\u015fka bir porta t\u00fcnellemeyi sa\u011flar. Bu, yerel makinenizdeki bir uygulamadan uzaktaki bir hizmete eri\u015fmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-\">Host web_server_tunnel\n    HostName 192.168.1.200\n    User webadmin\n    LocalForward 8080 localhost:80  # Yerel 8080 -> Uzak 80<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma ile <code>ssh web_server_tunnel<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:8080<\/code> adresine giderek uzaktaki web sunucusunun 80 numaral\u0131 portundaki hizmete eri\u015febilirsiniz.<\/p>\n<h4>RemoteForward<\/h4>\n<p><code>RemoteForward<\/code> (veya <code>-R<\/code>), uzaktaki bir portu yerel bir makine \u00fczerindeki ba\u015fka bir porta t\u00fcnellemeyi sa\u011flar. Bu, uzaktaki sunucudaki bir uygulaman\u0131n yerel makinenizdeki bir hizmete eri\u015fmesi gerekti\u011finde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-\">Host local_service_access\n    HostName remote.example.com\n    User remoteuser\n    RemoteForward 8000 localhost:3000 # Uzak 8000 -> Yerel 3000<\/code><\/pre>\n<p>Bu ayar ile <code>ssh local_service_access<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, <code>remote.example.com<\/code> \u00fczerindeki herhangi bir uygulama <code>localhost:8000<\/code> adresine ba\u011flanarak asl\u0131nda yerel makinenizdeki <code>localhost:3000<\/code> hizmetine eri\u015febilir.<\/p>\n<h4>DynamicForward<\/h4>\n<p><code>DynamicForward<\/code> (veya <code>-D<\/code>), SSH istemcinizi bir SOCKS proxy sunucusu olarak \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, t\u00fcm taray\u0131c\u0131 trafi\u011fini veya belirli uygulamalar\u0131n trafi\u011fini SSH t\u00fcneli \u00fczerinden y\u00f6nlendirmek i\u00e7in kullan\u0131labilir, b\u00f6ylece uzaktaki sunucunun a\u011f\u0131ndan internete eri\u015fim sa\u011flanabilir.<\/p>\n<pre><code class=\"language-\">Host socks_proxy\n    HostName proxy.example.com\n    User proxyuser\n    DynamicForward 1080 # Yerel 1080 portunda SOCKS proxy ba\u015flat<\/code><\/pre>\n<p><code>ssh socks_proxy<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, web taray\u0131c\u0131n\u0131z\u0131n veya di\u011fer uygulamalar\u0131n\u0131z\u0131n SOCKS proxy ayarlar\u0131n\u0131 <code>localhost:1080<\/code> olarak yap\u0131land\u0131rarak t\u00fcm trafi\u011fi bu t\u00fcnel \u00fczerinden ge\u00e7irebilirsiniz.<\/p>\n<h3>Ba\u011flant\u0131 Payla\u015f\u0131m\u0131 (Connection Sharing)<\/h3>\n<p>SSH ba\u011flant\u0131 payla\u015f\u0131m\u0131, birden fazla SSH oturumunun (\u00f6rne\u011fin, <code>ssh<\/code>, <code>scp<\/code>, <code>sftp<\/code> komutlar\u0131) tek bir ana ba\u011flant\u0131 \u00fczerinden multiplex edilmesini sa\u011flar. Bu, yeni ba\u011flant\u0131lar\u0131n \u00e7ok daha h\u0131zl\u0131 kurulmas\u0131na ve kimlik do\u011frulama ad\u0131mlar\u0131n\u0131n tekrarlanmas\u0131na gerek kalmamas\u0131na yol a\u00e7ar.<\/p>\n<h4>ControlMaster<\/h4>\n<p><code>ControlMaster<\/code>, ba\u011flant\u0131 payla\u015f\u0131m\u0131n\u0131n etkinle\u015ftirilip etkinle\u015ftirilmeyece\u011fini belirler.<br \/>\n*   <code>auto<\/code>: \u0130lk ba\u011flant\u0131 ana ba\u011flant\u0131 olur ve sonraki ba\u011flant\u0131lar bu ana ba\u011flant\u0131y\u0131 kullan\u0131r.<br \/>\n*   <code>yes<\/code>: Bu ba\u011flant\u0131 her zaman ana ba\u011flant\u0131 olur.<br \/>\n*   <code>no<\/code>: Ba\u011flant\u0131 payla\u015f\u0131m\u0131 kullan\u0131lmaz.<\/p>\n<pre><code class=\"language-\">Host *\n    ControlMaster auto\n    ControlPath ~\/.ssh\/control\/%r@%h:%p\n    ControlPersist 600 # Ana ba\u011flant\u0131y\u0131 600 saniye (10 dakika) a\u00e7\u0131k tut<\/code><\/pre>\n<h4>ControlPath<\/h4>\n<p><code>ControlPath<\/code>, ana ba\u011flant\u0131n\u0131n ileti\u015fim kurmak i\u00e7in kullanaca\u011f\u0131 UNIX soket dosyas\u0131n\u0131n yolunu belirtir. <code>%r<\/code>, uzak kullan\u0131c\u0131 ad\u0131n\u0131; <code>%h<\/code>, uzak host ad\u0131n\u0131; <code>%p<\/code>, port numaras\u0131n\u0131 temsil eden \u00f6zel belirte\u00e7lerdir.<\/p>\n<pre><code class=\"language-\">Host *\n    ControlPath ~\/.ssh\/control\/%r@%h:%p<\/code><\/pre>\n<p>Bu soket dosyalar\u0131n\u0131 depolamak i\u00e7in <code>~\/.ssh\/control<\/code> gibi bir dizin olu\u015fturman\u0131z \u00f6nerilir: <code>mkdir -p ~\/.ssh\/control<\/code>.<\/p>\n<h4>ControlPersist<\/h4>\n<p><code>ControlPersist<\/code>, t\u00fcm istemci oturumlar\u0131 kapat\u0131ld\u0131ktan sonra ana ba\u011flant\u0131n\u0131n ka\u00e7 saniye boyunca a\u00e7\u0131k kalaca\u011f\u0131n\u0131 belirtir. Bu, k\u0131sa bir s\u00fcre sonra yeni bir ba\u011flant\u0131 kurman\u0131z gerekti\u011finde ana ba\u011flant\u0131n\u0131n hemen kapanmas\u0131n\u0131 engeller.<\/p>\n<pre><code class=\"language-\">Host *\n    ControlPersist 600 # 10 dakika<\/code><\/pre>\n<p><code>ControlPersist<\/code> de\u011feri <code>yes<\/code> olarak ayarlan\u0131rsa, ana ba\u011flant\u0131 manuel olarak kapat\u0131lana kadar a\u00e7\u0131k kal\u0131r.<\/p>\n<h3>Kimlik Do\u011frulama Arac\u0131s\u0131 (SSH Agent)<\/h3>\n<p>SSH agent, \u00f6zel anahtarlar\u0131n\u0131z\u0131 bellekte \u015fifrelenmi\u015f bir \u015fekilde tutan ve gerekti\u011finde SSH istemcisine sa\u011flayan bir programd\u0131r. Bu, her ba\u011flant\u0131 kurdu\u011funuzda anahtar parolan\u0131z\u0131 tekrar tekrar girmek zorunda kalmaman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>AddKeysToAgent<\/h4>\n<p><code>AddKeysToAgent<\/code>, bir anahtar ilk kez kullan\u0131ld\u0131\u011f\u0131nda otomatik olarak SSH agent&#8217;\u0131na eklenip eklenmeyece\u011fini belirtir.<\/p>\n<pre><code class=\"language-\">Host *\n    AddKeysToAgent yes<\/code><\/pre>\n<p>Bu, <code>ssh-add<\/code> komutunu manuel olarak \u00e7al\u0131\u015ft\u0131rma ihtiyac\u0131n\u0131 azalt\u0131r.<\/p>\n<h3>G\u00fcvenlik \u0130yile\u015ftirmeleri<\/h3>\n<p><code>~\/.ssh\/config<\/code> dosyas\u0131, SSH ba\u011flant\u0131lar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in de kullan\u0131labilir.<\/p>\n<h4>StrictHostKeyChecking<\/h4>\n<p>Bu se\u00e7enek, bir sunucunun anahtar\u0131n\u0131n <code>~\/.ssh\/known_hosts<\/code> dosyas\u0131nda bulunup bulunmad\u0131\u011f\u0131n\u0131 ve e\u015fle\u015fip e\u015fle\u015fmedi\u011fini kontrol eder.<br \/>\n*   <code>yes<\/code> (varsay\u0131lan): Sunucunun anahtar\u0131 e\u015fle\u015fmiyorsa veya bilinmiyorsa ba\u011flant\u0131y\u0131 reddeder.<br \/>\n*   <code>no<\/code>: Sunucu anahtar\u0131 bilinmiyorsa bile ba\u011flan\u0131r, ancak bir uyar\u0131 verir. G\u00fcvenli de\u011fildir!<br \/>\n*   <code>ask<\/code>: Sunucu anahtar\u0131 bilinmiyorsa kullan\u0131c\u0131ya sorar.<\/p>\n<pre><code class=\"language-\">Host my_critical_server\n    StrictHostKeyChecking yes<\/code><\/pre>\n<p><code>StrictHostKeyChecking no<\/code> ayar\u0131n\u0131 asla kritik sunucular i\u00e7in kullanmamal\u0131s\u0131n\u0131z, \u00e7\u00fcnk\u00fc bu, man-in-the-middle sald\u0131r\u0131lar\u0131na kar\u015f\u0131 savunmas\u0131z kalman\u0131za neden olabilir.<\/p>\n<h4>UserKnownHostsFile<\/h4>\n<p><code>UserKnownHostsFile<\/code>, bilinen host anahtarlar\u0131n\u0131n depoland\u0131\u011f\u0131 dosyan\u0131n yolunu belirtir. Birden fazla <code>known_hosts<\/code> dosyas\u0131 kullanman\u0131z gerekti\u011finde faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-\">Host specific_env\n    UserKnownHostsFile ~\/.ssh\/known_hosts_specific_env<\/code><\/pre>\n<h4>Ciphers, MACs, KexAlgorithms<\/h4>\n<p>Bu se\u00e7enekler, SSH ba\u011flant\u0131s\u0131 s\u0131ras\u0131nda kullan\u0131lacak \u015fifreleme algoritmalar\u0131n\u0131, mesaj do\u011frulama kodlar\u0131n\u0131 (MAC) ve anahtar de\u011fi\u015fim algoritmalar\u0131n\u0131 (KexAlgorithms) belirtir. Belirli g\u00fcvenlik standartlar\u0131na uyman\u0131z gerekiyorsa veya eski, zay\u0131f algoritmalar\u0131n kullan\u0131m\u0131n\u0131 engellemek istiyorsan\u0131z bu ayarlar\u0131 kullanabilirsiniz.<\/p>\n<pre><code class=\"language-\">Host *\n    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com\n    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com\n    KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256<\/code><\/pre>\n<p>Bu algoritmalar s\u00fcrekli geli\u015fti\u011fi i\u00e7in g\u00fcncel ve g\u00fcvenli olanlar\u0131 ara\u015ft\u0131r\u0131p kullanmak \u00f6nemlidir.<\/p>\n<h4>PermitLocalCommand<\/h4>\n<p><code>PermitLocalCommand<\/code>, <code>LocalCommand<\/code> se\u00e7ene\u011fiyle yerel komutlar\u0131n y\u00fcr\u00fct\u00fclmesine izin verilip verilmeyece\u011fini belirtir. Varsay\u0131lan olarak <code>no<\/code>&#8216;dur. G\u00fcvenlik riski ta\u015f\u0131d\u0131\u011f\u0131 i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-\">Host my_server\n    PermitLocalCommand no<\/code><\/pre>\n<h3>Di\u011fer Faydal\u0131 Se\u00e7enekler<\/h3>\n<h4>ForwardAgent<\/h4>\n<p><code>ForwardAgent<\/code> (veya <code>-A<\/code>), SSH agent&#8217;\u0131n\u0131 uzaktaki sunucuya iletir. Bu, uzaktaki sunucudan ba\u015fka bir sunucuya (\u00f6rne\u011fin, bir Git deposuna) ba\u011flan\u0131rken yerel makinenizdeki anahtarlar\u0131 kullanman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-\">Host github.com\n    HostName github.com\n    User git\n    ForwardAgent yes\n    IdentityFile ~\/.ssh\/id_rsa_github<\/code><\/pre>\n<h4>ForwardX11<\/h4>\n<p><code>ForwardX11<\/code> (veya <code>-X<\/code>), X11 oturumunu uzaktaki sunucudan yerel makinenize iletir. Bu, uzaktaki sunucuda \u00e7al\u0131\u015fan grafiksel uygulamalar\u0131 yerel ekran\u0131n\u0131zda g\u00f6r\u00fcnt\u00fclemenizi sa\u011flar.<\/p>\n<pre><code class=\"language-\">Host remote_desktop\n    ForwardX11 yes<\/code><\/pre>\n<h4>RequestTTY<\/h4>\n<p><code>RequestTTY<\/code> (veya <code>-t<\/code>), bir ps\u00f6do-terminal tahsis edilmesini ister. Bu, \u00f6zellikle <code>ssh<\/code> komutuyla etkile\u015fimli olmayan komutlar \u00e7al\u0131\u015ft\u0131r\u0131rken ancak yine de bir terminal ortam\u0131na ihtiya\u00e7 duyuldu\u011funda faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-\">Host my_script_server\n    RequestTTY yes\n    RemoteCommand \/path\/to\/my\/script.sh<\/code><\/pre>\n<p>Bu, <code>ssh my_script_server<\/code> komutu ile <code>my_script.sh<\/code> beti\u011finin bir terminal ortam\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>NoHostAuthenticationForLocalhost<\/h4>\n<p>Bu se\u00e7enek, <code>localhost<\/code> ba\u011flant\u0131lar\u0131 i\u00e7in host anahtar\u0131 do\u011frulamay\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131r. <code>LocalForward<\/code> veya <code>DynamicForward<\/code> ile yerel olarak t\u00fcnellenen ba\u011flant\u0131lar i\u00e7in kullan\u0131\u015fl\u0131 olabilir, ancak genellikle <code>StrictHostKeyChecking<\/code>&#8216;i <code>no<\/code> olarak ayarlamak gibi g\u00fcvenlik riskleri ta\u015f\u0131yabilir. Varsay\u0131lan olarak <code>no<\/code>&#8216;dur.<\/p>\n<pre><code class=\"language-\">Host localhost\n    NoHostAuthenticationForLocalhost yes<\/code><\/pre>\n<h2>Pratik Senaryolar ve \u00d6rnekler<\/h2>\n<p>\u015eimdiye kadar \u00f6\u011frendi\u011fimiz se\u00e7enekleri kullanarak birka\u00e7 pratik senaryoyu inceleyelim.<\/p>\n<h3>\u00d6rnek 1: Temel Sunucu Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>En basit ve en s\u0131k kullan\u0131lan yap\u0131land\u0131rma. Uzun bir IP adresi veya FQDN yerine k\u0131sa bir takma ad kullanmak.<\/p>\n<pre><code class=\"language-\">Host webserver\n    HostName 192.168.1.10\n    User webadmin\n    Port 2222\n    IdentityFile ~\/.ssh\/id_rsa_webserver<\/code><\/pre>\n<p>Art\u0131k <code>ssh webserver<\/code> komutunu kullanarak bu sunucuya ba\u011flanabilirsiniz.<\/p>\n<h3>\u00d6rnek 2: Jump Host \u00dczerinden Ba\u011flant\u0131<\/h3>\n<p>G\u00fcvenlik duvar\u0131n\u0131n arkas\u0131ndaki bir sunucuya, bir &#8220;bastion&#8221; veya &#8220;jump host&#8221; \u00fczerinden eri\u015fim.<\/p>\n<pre><code class=\"language-\">Host internal-db\n    HostName 10.0.0.15\n    User dbuser\n    ProxyJump bastion\n\nHost bastion\n    HostName bastion.example.com\n    User jumpuser\n    IdentityFile ~\/.ssh\/id_rsa_bastion\n    Port 22<\/code><\/pre>\n<p><code>ssh internal-db<\/code> komutu, \u00f6nce <code>bastion<\/code> host&#8217;una ba\u011flan\u0131r ve oradan <code>internal-db<\/code>&#8216;ye atlar.<\/p>\n<h3>\u00d6rnek 3: Port Y\u00f6nlendirme ile Web Aray\u00fcz\u00fcne Eri\u015fim<\/h3>\n<p>Uzaktaki bir sunucudaki web aray\u00fcz\u00fcne, yerel makinenizden eri\u015fmek i\u00e7in bir port t\u00fcneli olu\u015fturma.<\/p>\n<pre><code class=\"language-\">Host grafana-tunnel\n    HostName monitoring.example.com\n    User monitoruser\n    LocalForward 3000 localhost:3000 # Yerel 3000 -> Uzak 3000\n    IdentityFile ~\/.ssh\/id_rsa_monitor<\/code><\/pre>\n<p><code>ssh grafana-tunnel<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:3000<\/code> adresine giderek uzaktaki Grafana aray\u00fcz\u00fcne eri\u015febilirsiniz.<\/p>\n<h3>\u00d6rnek 4: Ba\u011flant\u0131 Payla\u015f\u0131m\u0131 ile H\u0131zl\u0131 Yeniden Ba\u011flant\u0131lar<\/h3>\n<p>S\u0131k s\u0131k ba\u011flan\u0131lan sunucular i\u00e7in ba\u011flant\u0131 payla\u015f\u0131m\u0131 ile oturum a\u00e7ma h\u0131z\u0131n\u0131 art\u0131rma.<\/p>\n<pre><code class=\"language-\">Host dev-server\n    HostName dev.example.com\n    User developer\n    IdentityFile ~\/.ssh\/id_rsa_dev\n    ControlMaster auto\n    ControlPath ~\/.ssh\/sockets\/%r@%h:%p\n    ControlPersist 1h # Ana ba\u011flant\u0131y\u0131 1 saat a\u00e7\u0131k tut<\/code><\/pre>\n<p>\u0130lk <code>ssh dev-server<\/code> ba\u011flant\u0131s\u0131ndan sonra, ayn\u0131 sunucuya yap\u0131lacak <code>scp<\/code>, <code>sftp<\/code> veya yeni <code>ssh<\/code> ba\u011flant\u0131lar\u0131 an\u0131nda kurulur. (<code>mkdir -p ~\/.ssh\/sockets<\/code> yapmay\u0131 unutmay\u0131n.)<\/p>\n<h3>\u00d6rnek 5: Geli\u015fmi\u015f G\u00fcvenlik Ayarlar\u0131<\/h3>\n<p>Belirli bir sunucu i\u00e7in daha kat\u0131 g\u00fcvenlik politikalar\u0131 uygulama.<\/p>\n<pre><code class=\"language-\">Host critical-prod-server\n    HostName prod.example.com\n    User root\n    IdentityFile ~\/.ssh\/id_rsa_prod_root\n    StrictHostKeyChecking yes\n    IdentitiesOnly yes\n    Ciphers aes256-gcm@openssh.com\n    MACs hmac-sha2-512-etm@openssh.com\n    KexAlgorithms curve25519-sha256@libssh.org<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, bu sunucuya yaln\u0131zca belirli bir anahtarla, bilinen bir host anahtar\u0131 ile ve sadece modern, g\u00fc\u00e7l\u00fc kriptografik algoritmalarla ba\u011flan\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>\u00d6rnek 6: GitHub\/GitLab \u0130\u00e7in \u00d6zel Anahtar<\/h3>\n<p>Birden fazla Git platformu kullan\u0131rken farkl\u0131 anahtarlar belirtme.<\/p>\n<pre><code class=\"language-\">Host github.com\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/id_rsa_github\n\nHost gitlab.com\n    HostName gitlab.com\n    User git\n    IdentityFile ~\/.ssh\/id_rsa_gitlab\n\nHost my-internal-git\n    HostName git.internal.corp\n    User git\n    IdentityFile ~\/.ssh\/id_rsa_internal<\/code><\/pre>\n<p>Bu sayede, <code>git clone git@github.com:user\/repo.git<\/code> veya <code>git clone git@gitlab.com:user\/repo.git<\/code> gibi komutlar do\u011fru anahtarlar\u0131 otomatik olarak kullan\u0131r.<\/p>\n<h2>Sorun Giderme ve \u0130pu\u00e7lar\u0131<\/h2>\n<p><code>~\/.ssh\/config<\/code> dosyas\u0131 g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, bazen beklenmedik davran\u0131\u015flarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<h3>Dosya \u0130zinleri<\/h3>\n<p>En s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlardan biri yanl\u0131\u015f dosya izinleridir. SSH istemcisi, <code>~\/.ssh\/config<\/code> dosyas\u0131n\u0131n veya <code>~\/.ssh<\/code> dizininin \u00e7ok a\u00e7\u0131k izinlere sahip oldu\u011funu tespit ederse, dosyay\u0131 yok sayabilir veya bir uyar\u0131 verebilir.<br \/>\n<strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>chmod 600 ~\/.ssh\/config<\/code> ve <code>chmod 700 ~\/.ssh<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rarak do\u011fru izinleri ayarlay\u0131n.<\/p>\n<h3>Hatal\u0131 Anahtar Yollar\u0131<\/h3>\n<p><code>IdentityFile<\/code> ile belirtilen \u00f6zel anahtar dosyas\u0131n\u0131n yolu yanl\u0131\u015fsa veya anahtar\u0131n izinleri hatal\u0131ysa ba\u011flant\u0131 ba\u015far\u0131s\u0131z olur.<br \/>\n<strong>\u00c7\u00f6z\u00fcm:<\/strong> Anahtar dosyas\u0131n\u0131n do\u011fru yolda oldu\u011fundan ve <code>chmod 600 ~\/.ssh\/my_key<\/code> gibi izinlere sahip oldu\u011fundan emin olun.<\/p>\n<h3><code>ssh -v<\/code> veya <code>ssh -vvv<\/code> ile Hata Ay\u0131klama<\/h3>\n<p>SSH istemcisi, <code>-v<\/code> (verbose) se\u00e7ene\u011fi ile \u00e7ok ayr\u0131nt\u0131l\u0131 bir \u00e7\u0131kt\u0131 sa\u011flayabilir. <code>-vvv<\/code> en y\u00fcksek ayr\u0131nt\u0131 d\u00fczeyini verir ve ba\u011flant\u0131 s\u00fcrecinin her ad\u0131m\u0131n\u0131 g\u00f6sterir. Bu \u00e7\u0131kt\u0131, sorun giderme i\u00e7in paha bi\u00e7ilmezdir.<br \/>\n<strong>Kullan\u0131m:<\/strong> <code>ssh -vvv my_server<\/code><br \/>\nBu \u00e7\u0131kt\u0131, hangi anahtarlar\u0131n denendi\u011fini, hangi kimlik do\u011frulama y\u00f6ntemlerinin kullan\u0131ld\u0131\u011f\u0131n\u0131 ve ba\u011flant\u0131n\u0131n neden ba\u015far\u0131s\u0131z oldu\u011funu anlaman\u0131za yard\u0131mc\u0131 olabilir.<\/p>\n<h3><code>~\/.ssh\/known_hosts<\/code> Dosyas\u0131n\u0131 Y\u00f6netme<\/h3>\n<p><code>StrictHostKeyChecking yes<\/code> olarak ayarland\u0131\u011f\u0131nda, sunucunun anahtar\u0131n\u0131n <code>known_hosts<\/code> dosyas\u0131nda e\u015fle\u015fmesi gerekir. E\u011fer sunucunun IP adresi veya anahtar\u0131 de\u011fi\u015firse, bir uyar\u0131 al\u0131rs\u0131n\u0131z ve ba\u011flant\u0131 reddedilir.<br \/>\n<strong>\u00c7\u00f6z\u00fcm:<\/strong> <code>ssh-keygen -R hostname_or_ip<\/code> komutu ile <code>known_hosts<\/code> dosyas\u0131ndan eski girdiyi kald\u0131rabilirsiniz.<\/p>\n<h3>SSH Agent&#8217;\u0131n Do\u011fru \u00c7al\u0131\u015ft\u0131\u011f\u0131ndan Emin Olma<\/h3>\n<p>Anahtar parolas\u0131n\u0131 tekrar tekrar girmekten ka\u00e7\u0131nmak i\u00e7in SSH agent kullan\u0131yorsan\u0131z, agent&#8217;\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve anahtarlar\u0131n\u0131z\u0131n y\u00fckl\u00fc oldu\u011fundan emin olun.<br \/>\n<strong>Kontrol:<\/strong> <code>ssh-add -l<\/code> komutu y\u00fckl\u00fc anahtarlar\u0131 listeler. E\u011fer agent \u00e7al\u0131\u015fm\u0131yorsa veya anahtarlar y\u00fckl\u00fc de\u011filse, <code>eval \"$(ssh-agent -s)\"<\/code> ve <code>ssh-add ~\/.ssh\/my_key<\/code> komutlar\u0131n\u0131 kullanman\u0131z gerekebilir.<\/p>\n<h3>Kullan\u0131c\u0131 ve Host \u00d6zelinde Ayarlar\u0131n \u00d6nceli\u011fi<\/h3>\n<p><code>~\/.ssh\/config<\/code> dosyas\u0131ndaki ayarlar, <code>Host<\/code> bloklar\u0131n\u0131n s\u0131ras\u0131na g\u00f6re i\u015flenir. \u0130lk e\u015fle\u015fen <code>Host<\/code> blo\u011fundaki ayarlar, daha sonraki genel <code>Host *<\/code> blo\u011fundaki ayarlar\u0131 ge\u00e7ersiz k\u0131lar. Ayr\u0131ca, komut sat\u0131r\u0131nda belirtilen se\u00e7enekler (<code>ssh -p 2222 user@host<\/code>) her zaman <code>config<\/code> dosyas\u0131ndaki ayarlar\u0131 ge\u00e7ersiz k\u0131lar. Bu \u00f6ncelik s\u0131ras\u0131n\u0131 anlamak, beklenmeyen davran\u0131\u015flar\u0131 \u00e7\u00f6zmenize yard\u0131mc\u0131 olabilir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>SSH istemcinizin \u00f6zel ba\u011flant\u0131 se\u00e7eneklerini yap\u0131land\u0131rmak, uzaktaki sistemlerle etkile\u015fim kurma \u015feklinizi k\u00f6kten de\u011fi\u015ftirebilecek g\u00fc\u00e7l\u00fc bir beceridir. <code>~\/.ssh\/config<\/code> dosyas\u0131n\u0131 etkin bir \u015fekilde kullanarak, ba\u011flant\u0131lar\u0131n\u0131z\u0131 otomatikle\u015ftirebilir, karma\u015f\u0131k a\u011f topolojileri \u00fczerinden kolayca eri\u015fim sa\u011flayabilir, g\u00fcvenlik duru\u015funuzu g\u00fc\u00e7lendirebilir ve genel olarak SSH deneyiminizi \u00e7ok daha verimli hale getirebilirsiniz.<\/p>\n<p>Bu rehberde ele ald\u0131\u011f\u0131m\u0131z temel ve geli\u015fmi\u015f se\u00e7enekler, SSH istemcinizin sundu\u011fu geni\u015f \u00f6zelle\u015ftirme yeteneklerinin sadece bir ba\u015flang\u0131c\u0131d\u0131r. Her bir se\u00e7ene\u011fi kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re uyarlayarak, g\u00fcnl\u00fck i\u015f ak\u0131\u015f\u0131n\u0131zda \u00f6nemli zaman tasarruflar\u0131 sa\u011flayabilir ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z \u00e7e\u015fitli senaryolara daha esnek \u00e7\u00f6z\u00fcmler \u00fcretebilirsiniz. SSH&#8217;nin derinliklerine indik\u00e7e, bu basit yap\u0131land\u0131rma dosyas\u0131n\u0131n ne kadar g\u00fc\u00e7l\u00fc ve vazge\u00e7ilmez bir ara\u00e7 oldu\u011funu daha iyi anlayacaks\u0131n\u0131z. Unutmay\u0131n, iyi yap\u0131land\u0131r\u0131lm\u0131\u015f bir SSH istemcisi, g\u00fcvenli ve verimli bir uzaktan \u00e7al\u0131\u015fma ortam\u0131n\u0131n temel ta\u015flar\u0131ndan biridir.<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi\nGiri\u015f\nSSH (Secure Shell), g\u00fcn\u00fcm\u00fczdeki sistem y\u00f6neticileri, geli\u015f","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32988","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi\" \/>\n<meta property=\"og:description\" content=\"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi Giri\u015f SSH (Secure Shell), g\u00fcn\u00fcm\u00fczdeki sistem y\u00f6neticileri, geli\u015f\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-28T03:41:00+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi\",\"datePublished\":\"2025-10-28T03:41:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\"},\"wordCount\":3180,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\",\"name\":\"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-28T03:41:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi","og_description":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi Giri\u015f SSH (Secure Shell), g\u00fcn\u00fcm\u00fczdeki sistem y\u00f6neticileri, geli\u015f","og_url":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-28T03:41:00+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi","datePublished":"2025-10-28T03:41:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/"},"wordCount":3180,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/","name":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-28T03:41:00+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ssh-istemciniz-icin-ozel-baglanti-seceneklerini-yapilandirma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SSH \u0130stemciniz \u0130\u00e7in \u00d6zel Ba\u011flant\u0131 Se\u00e7eneklerini Yap\u0131land\u0131rma Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32988"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32988\/revisions"}],"predecessor-version":[{"id":32989,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32988\/revisions\/32989"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}