Uzaktan bilgi işlem söz konusu olduğunda, SSH en popüler ve güvenli protokollerden biridir. SSH, uzak cihazlarla güvenli bir bağlantı kuran kriptografik bir ağ protokolüdür. Uzak bir cihaza bağlandıktan sonra, kullanıcı uzak kabukta komutlar çalıştırabilir. SSH, en çok ağ ve sistem yöneticileri arasında yaygındır.
Bu kopya kağıdı tarzındaki kılavuz, SSH'ye genel bir bakış, SSH ile bağlanmanın bazı yaygın yollarını ve çeşitli SSH yapılandırmalarını göstermektedir.
SSH'ye Genel Bakış
SSH, Secure Shell (Güvenli Kabuk) kelimelerinin kısaltmasıdır. Bazıları SSH'yi Secure Socket Shell olarak da adlandırır. SSH, uzak bir sunucuya erişmenin en yaygın yoludur. SSH kullanarak uzak bir sisteme bağlanırken, mevcut bir hesaba bağlanırsınız. Bağlandığınızda, bir kabuk oturumuna erişiminiz olur. Çalıştırılan tüm komutlar uzak makinede yürütülür ve çıktı yerel terminalinizde yazdırılır.
SSH bağlantısı bir istemci-sunucu modelini takip eder. Uzak sistemin, uzak SSH bağlantılarını kabul etmek için SSH arka plan programını (daemon) çalıştırıyor olması gerekir. SSH arka plan programı belirli bağlantı noktalarını dinler, bağlantı isteklerinin kimliğini doğrular ve koşullar karşılandığında uygun ortamı oluşturur.
Bu kılavuz için, iki adet Ubuntu sunucusu yapılandırdık. Birincil sunucu, ikincil sunucuya bağlanacak şekilde yapılandırılacaktır. İkincil sunucu ise birincil sunucudan gelen SSH bağlantılarını kabul edecek şekilde yapılandırılacaktır. Bu sunucu IP adresleri kılavuz boyunca kullanılacaktır:
-
Birincil: 31.171.250.121
-
İkincil: 31.171.250.130
Başlamak için, Ubuntu'da uzak bir sunucuya bağlanmak için SSH'nin nasıl kullanılacağı ve Linux sunucunuzun SSH anahtar tabanlı kimlik doğrulamasını kullanacak şekilde nasıl yapılandırılacağı hakkındaki ayrıntılı kılavuzlarımıza göz atabilirsiniz. Şimdi başlayalım!
SSH Kimlik Doğrulaması
İki ana SSH kimlik doğrulama türü vardır. Geleneksel yöntem şifre kullanmaktır. Daha az güvenlidir ve kesinlikle önerilmez. İkinci yöntem ise SSH anahtarlarıdır. SSH anahtarları çok güçlü bir güvenlik sunar ve kesinlikle önerilir.
Şifre kimlik doğrulamasının anlaşılması ve yapılandırılması daha basit olsa da, kolayca istismar edilebilir. Örneğin, otomatik botlar bir sisteme sızmak için kaba kuvvet (brute force) kullanabilir. SSH anahtarları kriptografik anahtarlardır. Her anahtarın iki parçası vardır – özel bir anahtar (private key) ve genel bir anahtar (public key). Genel anahtar herhangi bir endişe duyulmadan her yerde paylaşılabilir. Ancak, özel anahtarın korunması gerekir.
SSH anahtarlarını kimlik doğrulama yöntemi olarak kullanmak için, uzak sistemde genel anahtarın bir kopyasının yüklü olması gerekir. Özel ve genel anahtarların kopyaları yerel sistemde de yüklü olmalıdır. Varsayılan olarak, genel anahtarlar aşağıdaki dosyada listelenir. Her benzersiz kullanıcının bu dosyanın benzersiz bir kopyası vardır:
|
1 |
~/.ssh/authorized_keys |
Kimlik doğrulama sürecinin işleyişi şu şekildedir:
-
İstemci sistemi, uzak sisteme bir bağlantı isteği gönderir. Ayrıca hangi SSH anahtarının kullanılacağını da gönderir.
-
Uzak sistem, genel anahtarın authorized_keys dosyasında listelenip listelenmediğini kontrol eder.
-
Anahtar mevcutsa, rastgele bir dize oluşturulur ve genel anahtar kullanılarak şifrelenir. Şifrelenmiş mesaj yalnızca özel anahtar kullanılarak çözülebilir.
-
Dizeyi aldıktan sonra, istemci dizeyi çözecektir.
-
Dize ve daha önce kararlaştırılan oturum kimliği (session ID) birleştirilerek bir MD5 karması (hash) oluşturulur. İstemci, MD5 karmasını uzak sisteme gönderir.
-
Uzak sistem rastgele dizeyi ve oturum kimliğini bilir. MD5 karması eşleşirse bağlantıya izin verilir.
SSH Anahtarları
Bu kılavuzda, SSH anahtarı kimlik doğrulamanın birincil odağı olacaktır. Bu nedenle, bu bölüm SSH anahtarlarıyla nasıl çalışılacağına odaklanacaktır.
-
SSH anahtar çifti oluşturma
Varsayılan olarak, bir Linux sisteminde yüklü bir SSH anahtarı yoktur. Ancak sistem, daha önce oluşturulmuş/yüklenmiş SSH anahtarları içerebilir. Önceki bir SSH anahtarı olmadığını varsayarsak, yeni bir SSH genel ve özel anahtar çifti oluşturmamız gerekir. SSH, SSH anahtarları oluşturmak için birçok kriptografik algoritmayı destekler; örneğin RSA, DSA, ECDSA ve EdDSA. RSA varsayılan ve tercih edilen algoritmadır.
-
Normal bir RSA anahtar çifti oluşturma
Bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın:
|
1 |
ssh-keygen |
Komut istemi size anahtar çiftini nereye kaydedeceğinizi soracaktır. Belirtildiği gibi, bu bir RSA anahtar çifti olacaktır. Herhangi bir değer girilmezse, SSH bunu varsayılan konuma kaydedecektir /home/demo/.ssh/id_rsa.
Bir sonraki adım bir parola girmektir. Bir parola kullanılması önerilir. Parolanın uzunluğu isteğe bağlıdır. Ek bir güvenlik katmanı sağlar. Ancak SSH, herhangi bir parola olmadan da anahtar oluşturulmasına izin verir. Parolasız anahtarlar istiyorsanız sadece Enter tuşuna basın.
Nihai çıktı aşağıdaki anahtar bilgilerini sağlar:
-
Özel anahtarın konumu ( /root/.ssh/id_rsa). Asla paylaşılmamalıdır.
-
Açık anahtarın konumu ( /root/.ssh/id_rsa.pub). Herkesle paylaşılması güvenlidir.
-
Anahtar parmak izi.
-
Rastgele bir anahtar resmi. Buradaki amaç, anahtarlarda bir güvenlik ihlali olması durumunda, anahtar resmindeki herhangi bir değişikliği fark ederek bunu muhtemelen anlayabilmenizdir.
-
Farklı bit boyutlarında bir RSA anahtar çifti oluşturma
Varsayılan olarak SSH anahtarları 2048 bittir. Güvenlik açısından bu yeterince iyi kabul edilir. Ancak, manuel olarak farklı bir bit sayısı kullanılmasını belirtebiliriz. Bit değeri ne kadar yüksek olursa, anahtar o kadar güçlü olur.
4096 bitlik bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın. Sunucuların çoğu 4096 bit SSH anahtarlarını destekler. Anahtar çok büyükse, DDoS koruması amacıyla kabul edilmeyebilir:
|
1 |
ssh-keygen -b 4096 |
Zaten bir anahtar çifti oluşturduğumuz için SSH, öncekinin üzerine yazılıp yazılmayacağını soracaktır. İşlemin geri kalanı, normal bir anahtar çifti oluşturmakla aynıdır.
-
Özel anahtar parolasını değiştirme
Özel anahtarın parolasını değiştirebiliriz. Bu işlem, mevcut parolayı bilmenizi gerektirir. Parolayı değiştirmek için aşağıdaki komutu çalıştırın:
|
1 |
ssh-keygen -p |

Komut, özel anahtarın konumunu girmenizi isteyecektir. Anahtar varsayılan konumda saklanıyorsa Enter tuşuna basın. Mevcut parolayı girin. Kabul edilirse, yeni bir parola belirleyebilirsiniz.
-
Bir SSH anahtarı parmak izini görüntüleme
Her SSH anahtar çifti kriptografik bir parmak izini paylaşır. Bu parmak izi, benzersiz anahtarları tanımlamak için kullanılabilir. Birçok durumda yararlı olabilir. Bir SSH anahtarının parmak izini kontrol etmek için aşağıdaki komutu çalıştırın:
|
1 |
ssh-keygen -l |

Anahtarın konumunu girin. Anahtar varsayılan konumda saklanıyorsa Enter tuşuna basın.
Açık Anahtarı Kopyalama
SSH anahtar çifti, uzak bağlantıları güvenli hale getirmeye hazırdır. Uzak sistemin kimlik doğrulama için SSH anahtarını kabul etmesi için açık anahtarın bir kopyasına sahip olması gerekir. Açık anahtarın bir kopyasını uzak sunucuya aktarmanın birden fazla yolu vardır.
-
ssh-copy-id Kullanarak
The ssh-copy-id aracı, OpenSSH paketinin bir parçası olarak gelir. SSH açık anahtarını kopyalamanın varsayılan yoludur. Basit ve kullanımı kolaydır. Açık anahtarın bir kopyasını aktarmak için aşağıdaki komutu çalıştırın:
|
1 |
ssh-copy-id <username>@<secondary_server_ip> |

İşlemi tamamlamak için uzak kullanıcı hesabının şifresine ihtiyacınız vardır. Başarılı olursa, bir başarı mesajı görüntülenecektir.
-
SSH bağlantısı kullanarak
Eğer ssh-copy-id aracı mevcut değilse ancak birincil sunucu SSH kullanarak ikincil sunucuya bağlanabiliyorsa, anahtarı kopyalamak için farklı bir yöntem kullanabiliriz. Bu yöntem, açık anahtarın içeriğini SSH komutu aracılığıyla uzak tarafa yönlendirmektir. Uzak sistemde ~/.ssh dizini yoksa bu yöntem çalışmayabilir:
|
1 |
cat ~/.ssh/id_rsa.pub | ssh <username>@<secondary_server_ip> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
-
Manuel olarak kopyalama
Uzak bağlantı bir seçenek değilse, geriye kalan tek işlem açık anahtarı uzak sunucuya manuel olarak eklemektir. İlk olarak, açık anahtarın içeriğini alın:
|
1 |
cat ~/.ssh/id_rsa.pub |
Uzak sunucuda, anahtarı uygun konuma yerleştirin:
|
1 2 3 |
mkdir -pv ~/.ssh echo <public_key> >> ~/.ssh/authorized_anahtarlar |
SSH Kullanımı
Ortak anahtar ayarlandığına göre, uzaktan bağlanmak için SSH kullanmaya hazırız.
-
Uzak bir sisteme bağlanma
İlk adım, SSH kullanarak uzak sisteme nasıl bağlanılacağını öğrenmektir. Hem yerel hem de uzak sistemin SSH trafiğine izin verdiği varsayılır. Uzak sisteme bağlanmak için aşağıdakini yazın:
|
1 |
ssh <secondary_server_ip> |

Uzak sunucudaki belirli bir kullanıcıya bağlanmak için bunun yerine aşağıdaki yapıyı kullanın:
|
1 |
ssh <username>@<secondary_server_ip> |

Sunucuya ilk kez bağlanılıyorsa, SSH bir uyarı gösterebilir. Bağlantıya devam etmek için yes girin. Uzak hesap şifre korumalıysa, şifreyi girmeniz gerekir. SSH anahtarı parola korumalıysa, parolayı da girmeniz gerekir.
-
Farklı bir porta bağlanma
Varsayılan olarak, SSH 22 numaralı portta çalışır. SSH istemcisi, uzak sisteme bağlanırken varsayılan port değerini kabul edecektir. Ancak, uzak sistem SSH trafiği için farklı bir portu dinliyorsa bu çalışmayacaktır. Böyle bir durumda, port numarasını manuel olarak belirtmemiz gerekir. Belirli portu belirtmek için -p bayrağını kullanın:
|
1 |
ssh -p <port> <username>@<secondary_server_ip> |
Portu her zaman manuel olarak belirtmek verimsizdir. Varsayılan port değerini kalıcı olarak değiştirebiliriz. Bunu yapmak için SSH yapılandırma dosyasını açın. Dosya mevcut değilse, aşağıdaki komut dosyayı oluşturacaktır:
|
1 |
nano ~/.ssh/config |
Ardından, aşağıdaki satırları ekleyin:
|
1 2 3 4 5 |
Host <remote_alias> HostName <remote_hostname> Port <port_value> |
-
Uzak sunucuda komut çalıştırma
Bağlantı kurulduğuna göre, yerel terminalde çalıştırdığınız her komut uzak sunucuya gidecektir. Oluşturulan tüm çıktılar yerel terminale gönderilecektir.
Çalıştırılacak tek bir komutsa, tam bir SSH girişi yapmadan da çalıştırabiliriz. Komutu SSH bağlantı talimatından sonra belirtmemiz yeterlidir:
|
1 |
ssh <username>@<secondary_server_ip> <command_to_run> |
-
SSH aracısına anahtar ekleme
SSH anahtarının bir parolası varsa, uzak sisteme her bağlandığınızda parolayı girmeniz gerekir. Bunu tekrar tekrar yapmak verimsizdir. Bir SSH aracısının bu işi halletmesini sağlayabiliriz. Bu, parolayı girdikten sonra özel anahtarı saklayan küçük bir yardımcı programdır. Özel anahtar, terminal oturumu boyunca kullanılabilir olacaktır. SSH aracısını başlatmak için aşağıdaki komutu çalıştırın:
|
1 |
eval $(ssh-agent) |

Program arka planda çalışıyor. Tek yapmanız gereken özel anahtarınızı aracıya eklemektir. Aşağıdaki komutu çalıştırın:
|
1 |
ssh-add |

İşlemi tamamlamak için parolayı girin.
-
SSH kimlik bilgilerini yönlendirme
SSH'yi bir sunucudan diğerine şifresiz bağlanacak şekilde de yapılandırabiliriz. Özellikle çok sayıda uzak sunucuyla çalışırken oldukça verimli olabilir. Bunu başarmak için SSH kimlik bilgilerini yönlendirmemiz gerekir. SSH kimlik bilgilerinin yönlendirilmesi, uzak sunucunun yerel makineden/sunucudan gelen bağlantıyı kabul edecek şekilde yapılandırılmasını gerektirir. Ardından, tek yapmanız gereken -A bayrağını kullanarak ilk sunucuya bağlanmaktır. Bu bayrak, mevcut oturum için kimlik bilgilerinizi sunuculara yönlendirir:
|
1 |
ssh -A <username>@<secondary_server_ip> |
Uzak Sunucu Yapılandırmaları
Bu bölüm, sunucu yanıtlarını ve bağlantı güvenliğini iyileştirmenize yardımcı olacak bazı yaygın sunucu tarafı yapılandırmalarını içerir.
-
Şifre kimlik doğrulamasını devre dışı bırakma
Eğer SSH anahtarları yapılandırılmışsa ve SSH bağlantısı beklendiği gibi çalışıyorsa, şifre kimlik doğrulamasını devre dışı bırakmak güvenlidir. Aşağıdaki yapılandırma, herhangi bir kullanıcı SSH üzerinden bağlandığında şifre sormayı durduracaktır. Uzak sunucuda, sshd_config dosyasını root/sudo yetkisiyle açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
Ardından, şu girdiyi arayın: PasswordAuthentication. Satır yorum satırı yapılmışsa, yorum işaretini kaldırın. Değeri no olarak değiştirin:
|
1 |
PasswordAuthentication no |

Dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliklerin geçerli olması için SSH servisini yeniden başlatın:
|
1 |
sudo service ssh restart |
Eğer sistem CentOS/Fedora ise, bunun yerine aşağıdaki komutu kullanın:
|
1 |
sudo service sshd restart |
-
SSH portunu değiştirme
Daha önce belirtildiği gibi, SSH, SSH trafiğini iletmek için port 22'yi kullanır. Ancak bazı sistem yöneticilerine göre, SSH için farklı bir port atamak daha iyidir. Bu, portu dolduran otomatik botlara karşı yardımcı olabilir. SSH'nin dinlediği portu değiştirmek için sshd_config dosyasını açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
Port girdisini arayın. Yorum satırı yapılmışsa, yorum işaretini kaldırın. Ardından, değeri farklı bir değerle değiştirin. Port değeri işaretsiz 16 bitlik bir tamsayıdır (0-65535):
|
1 |
Port 1024 |

Dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliği uygulamak için SSH daemon'ını yeniden başlatın:
|
1 |
sudo service ssh restart |
CentOS/Fedora üzerinde bunun yerine aşağıdaki komutu çalıştırın:
|
1 |
sudo service sshd restart |
-
Kullanıcı sınırlaması
Hangi kullanıcı hesaplarının SSH kullanarak bağlanabileceğini yapılandırabiliriz. Bu işlem aynı zamanda sshd_config dosyasında ince ayar yapmayı da gerektirir. Dosyayı sudo/root yetkisiyle açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
AllowUsers girdisini arayın. İzin verilen kullanıcıları ekleyin:
|
1 |
AllowUsers <user_1> <user_2> |

Dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliklerin geçerli olması için SSH daemon'ını yeniden başlatın:
|
1 |
sudo service ssh restart |
CentOS/Fedora üzerinde bunun yerine aşağıdaki komutu çalıştırın:
|
1 |
sudo service sshd restart |
-
Grup sınırlaması
Kullanıcı sınırlamasına benzer şekilde, hangi kullanıcı grubunun SSH kullanarak sisteme bağlanabileceğini de belirleyebiliriz. sshd_config dosyasını açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH kullanabilecek belirli bir kullanıcı grubunu eklemek için AllowGroups girdisini kullanın:
|
1 |
AllowGroups <user_group> |

Dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliklerin geçerli olması için SSH daemon'ını yeniden başlatın:
|
1 |
sudo service ssh restart |
CentOS/Fedora için bunun yerine aşağıdaki komutu çalıştırın:
|
1 |
sudo service sshd restart |
Kullanıcı grubuna herhangi bir kullanıcı eklenirse veya gruptan çıkarılırsa, SSH daemon'ının yeniden başlatılması gerektiğini unutmayın. Aksi takdirde, grup değişiklikleri geçerli olmayacaktır.
-
Root girişini devre dışı bırakma
Sudo yetkilerine sahip bir kullanıcıya erişiminiz varsa, SSH üzerinden root girişini devre dışı bırakmanız önerilir. sshd_config dosyasını açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
Şu girdinin değerini PermitRootLogin no olarak değiştirin:
|
1 |
PermitRootLogin no |

Dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliğin geçerli olması için SSH daemon'ını yeniden başlatın:
|
1 |
sudo service ssh restart |
CentOS/Fedora üzerinde bunun yerine aşağıdaki komutu çalıştırın:
|
1 |
sudo service sshd restart |
-
X uygulaması ekranlarını yönlendirme
SSH daemon, X uygulamalarının ekranını sunucudan istemciye de yönlendirebilir. Ancak bunun çalışabilmesi için uzak sistemde bir X windows sisteminin yapılandırılmış olması gerekir. Bu özelliğin SSH yapılandırmasından da etkinleştirilmesi gerekir. SSH yapılandırma dosyasını açın:
|
1 |
sudo nano /etc/ssh/sshd_config |
Şu yönergenin değerini X11Forwarding yes olarak değiştirin:
|
1 |
X11Forwarding yes |

Dosyayı kaydedin ve düzenleyiciyi kapatın. Değişikliğin geçerli olması için SSH arka plan programını (daemon) yeniden başlatın:
|
1 |
sudo service ssh restart |
CentOS/Fedora üzerinde bunun yerine aşağıdaki komutu çalıştırın:
|
1 |
sudo service sshd restart |
İstemci Yapılandırmaları
Bu bölümde, SSH istemcisindeki bazı yaygın yapılandırmalara göz atın.
-
Sunucuya özel bağlantı bilgileri
Yerel sistemde, uzak bir bağlantının ayrıntılarını tanımlayabiliriz. Tüm bilgiler şu konumda bulunan config dosyasında saklanır: ~/.ssh/config:
|
1 |
nano ~/.ssh/config |
Her bir uzak sistem bloğu, Host anahtar kelimesi ve ardından gelen bir takma ad (alias) ile belirtilir. Sisteme özel tüm yönergeler buraya yazılır. Uzak sisteme bağlanırken, SSH bunları otomatik olarak uygulayacaktır. Yapılandırmanın tam ve derinlemesine açıklaması için man sayfasına göz atın:
|
1 |
man ssh_config |

Uzak bir bağlantı için giriş aşağıdaki yapıyı takip edecektir:
|
1 2 3 |
Host <remote_hostname> <directive> <value> |
-
Bağlantı zaman aşımı
Herhangi bir işlem yapmaya hazır olmadan önce SSH oturumlarından bağlantınızın kesildiğini görebilirsiniz. İstemci uzak sunucuya herhangi bir paket göndermiyorsa, bir süre sonra bağlantı zaman aşımına uğrar. Bu tür durumları önlemek için, yerel istemciyi bağlantıyı canlı tutmak amacıyla arada bir paket gönderecek şekilde yapılandırabiliriz.
Yerel yapılandırma dosyasını açın:
|
1 |
nano ~/.ssh/config |
Uzak bağlantı girişinin altına şu yönergeyi ekleyin: ServerAliveInterval ve ardından saniye cinsinden paket aralığını yazın:
|
1 |
ServerAliveInterval 120 |

Dosyayı kaydedin ve düzenleyiciyi kapatın.
-
Anahtar (host) kontrolünü devre dışı bırakma
Varsayılan olarak, yeni bir sunucuya bağlanmaya çalışıldığında, SSH istemcisi uzak SSH arka plan programının parmak izini bildirecektir. Bu, ana bilgisayarın’ın orijinalliğini doğrulamak için yararlı bir özelliktir. Kötü niyetli bir kişi uzak ana bilgisayarı taklit etmeye çalışıyorsa, bu yeni bir sunucu olarak görünecektir.
Bu özelliği devre dışı bırakmak büyük bir güvenlik riski oluşturabilir. Genellikle bu seçeneğin açık tutulması önerilir. Ancak bazı durumlarda, ana bilgisayar kontrolünü devre dışı bırakmak kolaylık sağlayabilir. Yapılandırma dosyasını açın:
|
1 |
nano ~/.ssh/config |
Uzak ana bilgisayar bölümünün altına aşağıdaki yönergeleri ekleyin:

|
1 2 3 |
StrictHostKeyChecking no UserKnownHostsFile /dev/null |
İlk yönerge, yeni ana bilgisayarların known_hosts dosyasında saklanan bilinen ana bilgisayarlar listesine otomatik olarak eklenmesini devre dışı bırakacaktır. İkinci yönerge ise herhangi bir değişiklik konusunda uyarıda bulunmamak içindir. Dosyayı kaydedin ve düzenleyiciyi kapatın.
-
Tek bir TCP bağlantısı üzerinden SSH çoklama (Multiplexing)
Bazen bir TCP bağlantısı kurmak oldukça fazla zaman gerektirebilir. Aynı makineye birden fazla bağlantı yapılması gerekiyorsa, çoklama (multiplexing) yararlanabileceğiniz harika bir özelliktir. SSH çoklama, birden fazla SSH oturumu için aynı TCP bağlantısının kullanılmasına olanak tanır. Yeni oturumlar kurmak için gereken iş yükünün bir kısmını azaltır. Bağlantı sayısını sınırlamak da yardımcı olabilir.
Çoklamalı bir bağlantıyı manuel olarak ayarlayabilir veya SSH'nin bunu mevcut olduğunda kullanmasına izin verebiliriz. Burada, SSH'yi ikinci yolu izleyecek şekilde yapılandıracağız. SSH yapılandırma dosyasını açın:
|
1 |
nano ~/.ssh/config |
Dosyanın en üstüne bir joker karakter (wildcard) ana bilgisayar tanımı ekleyin. Bu, bir sonraki yönerge kümesinin tüm uzak bağlantılara uygulanmasını sağlar. Aşağıdaki yönergeleri ekleyin:
|
1 2 3 4 5 |
ControlMaster auto ControlPath ~/.ssh/multiplex/%r@%h:%p ControlPersist 1 |

İlk yönerge, SSH'ye mevcut olduğunda otomatik olarak çoklama kullanmasını söyler. İkinci yönerge, kontrol soketinin yolunu belirler. Bu soket, ilk oturum kurulduğunda oluşturulacaktır. Sonraki oturumlar bu soketi takip edecektir.
Son yönerge, SSH'a ilk ana bağlantının arka planda olmasına izin vermesini söyler. Ayrıca, son SSH oturumundan bir saniye sonra TCP bağlantılarının otomatik olarak sonlandırılacağını belirtir. Ardından, yapılandırma dosyasında bildirdiğimiz dizini oluşturun:
|
1 |
mkdir -pv ~/.ssh/multiplex |
Son olarak, çoklama (multiplexing) aktif olmalıdır.
SSH Kaçış Kodları
Bir bağlantı kurulduktan sonra, kaçış kodlarını kullanarak bağlantı davranışını kontrol etmenin yolları vardır.
-
Bağlantıyı kesmeye zorlama
Bir SSH oturumunda takılı mı kaldınız? SSH oturumları genellikle sunucu tarafından yönetilir. Sunucu sorun yaşıyorsa, yanıt vermeyen bir SSH oturumunda takılı kalmak sinir bozucu olabilir. Neyse ki OpenSSH, istemci tarafındaki bağlantı durumunu yönetmek için kullanışlı kontroller sunar.
Enter tuşuna birkaç kez basın. Ardından aşağıdaki komutu girin:
|
1 |
~. |
![]()
Burada, ~ kontrol karakteridir. Bu komutu istemciden çalıştırdıktan sonra bağlantı hemen kapanmalıdır.
-
SSH arka plan oturumu
Bir SSH oturumunu arka plana da alabiliriz. Arka plana alındığında, normal kabuk oturumuna geri dönersiniz. İşiniz bittiğinde tekrar SSH kabuğuna dönebilirsiniz. SSH oturumu arka planda kalırken zaman aşımını önlemek için uygun bir zaman aşımı yapılandırmasına sahip olmanız gerektiğini unutmayın. Bir SSH oturumunu arka plana almak için kontrol karakterini ve ardından şunu girin: Ctrl + Z:
|
1 |
~<Ctrl + Z> |

Eğer bu en son arka plan görevinizse, aşağıdaki komutu kullanarak onu yeniden etkinleştirebilirsiniz:
|
1 |
fg |
Birden fazla arka plan görevi varsa, iş listesinden belirleyebiliriz:
|
1 |
jobs |

Hedef işi ön plana getirmek için ilk sütundaki iş değerini not edin. Ardından aşağıdaki komutu çalıştırın:
|
1 |
fg %<job_value> |
-
Port yönlendirme yapılandırmasını değiştirme
Kontrol mekanizmasını kullanarak port yönlendirme kurallarını anında değiştirebiliriz. Bağlantı kurulduktan sonra port yönlendirme kuralları oluşturabilir veya kaldırabiliriz. Bu, SSH komut satırı arayüzünün bir parçasıdır.
SSH komut satırı arayüzüne erişmek için şu komutu çalıştırın:
|
1 |
~C |
![]()
Kullanılabilir seçenekleri listelemek için aşağıdaki komutu girin:
|
1 |
-h |
Çıktı çok yetersizse, aşağıdaki kontrol komutunu kullanarak ayrıntı düzeyini artırmayı deneyin:
|
1 |
~v |
Şimdi -h komutunu tekrar çalıştırın:
|
1 |
-h |

Çıktının açıkladığı gibi, basit bir komutla port yönlendirmelerinden herhangi birini uygulamak oldukça kolaydır. Örneğin, bir tünel, komut listesinde K ile belirtilen kill komutu kullanılarak da yok edilebilir.
Son Düşünceler
SSH ile karşılaşmak oldukça yaygındır. Bu yüzden SSH öğrenmek çok yararlıdır. Kapsamlı SSH genel bakışımız, kullanıcıların günlük olarak SSH kullanmak için bilmeleri gereken en önemli SSH yapılandırmalarını kapsar. Bir kez ustalaştığınızda, neredeyse tüm SSH sunucu yapılandırmalarıyla çalışabilmeniz gerekir.
Keyifli çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.