LinuxNasıl yapılırSunucu

SSH temelleri: SSH Sunucuları, İstemcileri ve Anahtarlarla Çalışma

Giriş

SSH, Linux sunucularına uzaktan bağlanmanın birincil yolu olarak kullanılan güvenli bir protokoldür. Uzak bir kabuk oluşturarak metin tabanlı bir arayüz sağlar. Bağlandıktan sonra yerel terminalinize yazdığınız tüm komutlar uzak sunucuya gönderilir ve orada yürütülür.

Bu hile sayfası(cheatsheet) tarzı kılavuzda, hedeflerinize ulaşmak için SSH ile bağlantı kurmanın bazı yaygın yollarını ele alacağız. Bu, sunucunuza farklı şekillerde nasıl bağlanacağınızı veya sunucunuzu nasıl yapılandıracağınızı bilmeniz gerektiğinde hızlı bir referans olarak kullanılabilir.

Bu Kılavuz Nasıl Kullanılır

  • Genel olarak SSH’ye aşina değilseniz veya yeni başlıyorsanız, önce SSH’ye Genel Bakış bölümünü okuyun .
  • Elde etmeye çalıştığınız şey için uygun olan sonraki bölümleri kullanın. Çoğu bölüm diğerlerine dayandırılmamıştır, bu nedenle aşağıdaki örnekleri bağımsız olarak kullanabilirsiniz.
  • İhtiyacınız olan bölümleri bulmak için bu sayfanın üst tarafındaki İçindekiler menüsünü (geniş sayfa genişliklerinde) veya tarayıcınızın bul işlevini kullanın.
  • vurgulanmış Değerleri kendi değerlerinizle değiştirerek verilen komut satırı örneklerini kopyalayıp yapıştırın .

SSH’ye Genel Bakış

Uzak bir Linux sunucusuna bağlanmanın en yaygın yolu SSH’dir. SSH, Secure Shell anlamına gelir ve komutları yürütmek, değişiklik yapmak ve hizmetleri uzaktan yapılandırmak için güvenli ve güvenli bir yol sağlar. SSH üzerinden bağlandığınızda, uzak sunucuda bulunan bir hesabı kullanarak oturum açarsınız.

SSH Nasıl Çalışır?

SSH üzerinden bağlandığınızda, sunucunuzla etkileşim kurabileceğiniz metin tabanlı bir arayüz olan bir kabuk oturumuna bırakılırsınız. SSH oturumunuz süresince yerel terminalinize yazdığınız tüm komutlar şifreli bir SSH tüneli aracılığıyla gönderilir ve sunucunuzda yürütülür.

SSH bağlantısı, bir istemci-sunucu modeli kullanılarak uygulanır. Bu, bir SSH bağlantısının kurulabilmesi için uzak makinenin SSH arka plan programı adı verilen bir yazılım parçası çalıştırıyor olması gerektiği anlamına gelir. Bu yazılım, belirli bir ağ bağlantı noktasındaki bağlantıları dinler, bağlantı isteklerinin kimliğini doğrular ve kullanıcı doğru kimlik bilgilerini sağlarsa uygun ortamı oluşturur.

Kullanıcının bilgisayarında bir SSH istemcisi olmalıdır. Bu, SSH protokolünü kullanarak nasıl iletişim kurulacağını bilen bir yazılım parçasıdır ve bağlanılacak uzak ana bilgisayar, kullanılacak kullanıcı adı ve kimlik doğrulaması için iletilmesi gereken kimlik bilgileri hakkında bilgi verilebilir. İstemci, kurmak istediği bağlantı türü hakkında belirli ayrıntıları da belirtebilir.

SSH Kullanıcıların Kimliğini Nasıl Doğrular?

İstemciler genellikle ya parolaları (daha az güvenli ve önerilmez) ya da çok güvenli olan SSH anahtarlarını kullanarak kimlik doğrulaması yapar.

Parola oturumları şifrelenir ve yeni kullanıcılar için anlaşılması kolaydır. Bununla birlikte, otomatikleştirilmiş botlar ve kötü niyetli kullanıcılar, genellikle parola tabanlı oturum açmaya izin veren hesaplarda kimlik doğrulaması yapmaya çalışır ve bu da güvenlik ihlallerine yol açabilir. Bu nedenle, çoğu yapılandırma için her zaman SSH anahtar tabanlı kimlik doğrulamasını ayarlamanızı öneririz.

SSH anahtarları, kimlik doğrulama için kullanılabilecek eşleşen bir şifreleme anahtarı setidir. Her set bir genel (public key) ve bir özel anahtar (private key) içerir. Açık anahtar endişe duymadan özgürce paylaşılabilirken, özel anahtar (private key) dikkatli bir şekilde korunmalı ve asla kimseye açıklanmamalıdır.

SSH anahtarlarını kullanarak kimlik doğrulaması yapmak için kullanıcının yerel bilgisayarında bir SSH anahtar çifti olması gerekir. Uzak sunucuda, ortak anahtar, kullanıcının ana dizini içindeki bir dosyaya kopyalanmalıdır ~/.ssh/authorized_keys. Bu dosya, bu hesapta oturum açmaya yetkili olan her satıra bir tane olmak üzere ortak anahtarların bir listesini içerir.

Bir istemci ana bilgisayara bağlandığında, SSH anahtar kimlik doğrulamasını kullanmak ister, sunucuya bu niyeti bildirir ve sunucuya hangi ortak anahtarın kullanılacağını söyler. Sunucu daha sonra authorized_keys ortak anahtar için dosyasını kontrol eder, rastgele bir dize oluşturur ve ortak anahtarı kullanarak onu şifreler. Bu şifreli mesajın şifresi sadece ilgili özel anahtar (private key) ile çözülebilir. Sunucu, gerçekten ilişkili özel anahtara (private key) sahip olup olmadığını test etmek için bu şifreli mesajı istemciye gönderir.

Bu mesajı aldıktan sonra, müşteri özel anahtarı (private key) kullanarak şifresini çözecek ve ortaya çıkan rastgele diziyi önceden anlaşılmış bir oturum kimliği ile birleştirecektir. Daha sonra bu değerin bir MD5 karmasını oluşturur ve bunu sunucuya geri iletir. Sunucu zaten orijinal mesaja ve oturum kimliğine sahipti, bu nedenle bu değerler tarafından oluşturulan bir MD5 karmasını karşılaştırabilir ve istemcinin özel anahtara (private key) sahip olması gerektiğini belirleyebilir.

Artık SSH’nin nasıl çalıştığını bildiğinize göre, SSH ile çalışmanın farklı yollarını göstermek için bazı örnekleri tartışmaya başlayabiliriz.

SSH Anahtarları Oluşturma ve Çalışma

Bu bölüm, bir istemci makinede SSH anahtarlarının nasıl oluşturulacağını ve ortak anahtarın, kullanılmaları gereken sunuculara nasıl dağıtılacağını ele alacaktır. Bu, gelecekteki bağlantılara izin verdiği artırılmış güvenlik nedeniyle daha önce anahtar oluşturmadıysanız, başlamak için iyi bir bölümdür.

SSH Anahtar Çifti Oluşturma

Yerel bilgisayarınızda yeni bir SSH genel(public) ve özel anahtar(private) çifti oluşturmak, parola olmadan uzak bir sunucuyla kimlik doğrulamanın ilk adımıdır. Olmaması için iyi bir neden olmadıkça, her zaman SSH anahtarlarını kullanarak kimlik doğrulaması yapmalısınız.

RSA, DSA ve ECDSA dahil olmak üzere SSH anahtarları oluşturmak için bir dizi şifreleme algoritması kullanılabilir. RSA anahtarları genellikle tercih edilir ve varsayılan anahtar türüdür.

Yerel bilgisayarınızda bir RSA anahtar çifti oluşturmak için şunu yazın:

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Bu istem, RSA özel anahtarınızı (private key) saklayacağınız konumu seçmenize olanak tanır. Bunu varsayılan olarak bırakmak için ENTER basın; bu, bunları kullanıcının ana dizinindeki gizli dizinde saklayacaktır. .ssh Varsayılan konumu seçili bırakmak, SSH istemcinizin anahtarları otomatik olarak bulmasını sağlar.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Sonraki istem, özel anahtarınızı (private key) güvenceye almak için isteğe bağlı uzunlukta bir parola girmenize olanak tanır. Varsayılan olarak, ek bir güvenlik önlemi olarak, özel anahtarı (private key) her kullandığınızda burada belirlediğiniz herhangi bir parolayı girmeniz gerekecektir. Parola istemiyorsanız, bunu boş bırakmak için ENTER’a basmaktan çekinmeyin. Ancak bunun özel anahtarınızın (private key) kontrolünü ele geçiren herkesin sunucularınızda oturum açmasına izin vereceğini unutmayın.

Bir parola girmeyi seçerseniz, siz yazarken hiçbir şey görüntülenmez. Bu bir güvenlik önlemidir.

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8c:e9:7c:fa:aa:aa:e5:9c:c9:b8:60:1f:aa:1c:d3:8a root@here
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|       +         |
|      o S   .    |
|     o   . * +   |
|      o + = O .  |
|       + = = +   |
|      ....Eo+    |
+-----------------+

Bu prosedür, kullanıcınızın ana dizini içindeki gizli .ssh dizinde bulunan bir RSA SSH anahtar çifti oluşturmuştur. Bu dosyalar:

  • ~/.ssh/id_rsa: Özel anahtar (private key). BU DOSYAYI PAYLAŞMAYIN!
  • ~/.ssh/id_rsa.pub: İlişkili ortak anahtar (public key). Bu, sorun olmadan özgürce paylaşılabilir.

Daha Fazla Bit Sayısı olan bir SSH Anahtar Çifti Oluşturun

SSH anahtarları varsayılan olarak 2048 bittir. Bu genellikle güvenlik için yeterince iyi olarak kabul edilir, ancak daha sertleştirilmiş bir anahtar için daha fazla sayıda bit belirtebilirsiniz.

Bunu yapmak için, -b istediğiniz bit sayısını içeren argümanı ekleyin. Çoğu sunucu, uzunluğu en az 4096 bit olan anahtarları destekler. DDOS koruması amacıyla daha uzun anahtarlar kabul edilmeyebilir:

ssh-keygen -b 4096

Daha önce farklı bir anahtar oluşturduysanız, önceki anahtarınızın üzerine yazmak isteyip istemediğiniz sorulacaktır:

Overwrite (y/n)?

“Evet”i seçerseniz, önceki anahtarınızın üzerine yazılır ve artık bu anahtarı kullanarak sunuculara giriş yapamazsınız. Bu nedenle, anahtarların üzerine dikkatle yazdığınızdan emin olun.

Özel Anahtardaki (private key) Parolayı Kaldırma veya Değiştirme

Özel anahtarınız (private key) için bir parola oluşturduysanız ve bunu değiştirmek veya kaldırmak istiyorsanız bunu kolayca yapabilirsiniz.

Not : Parolayı değiştirmek veya kaldırmak için orijinal parolayı bilmeniz gerekir. Anahtarın parolasını kaybettiyseniz, kurtarma yoktur ve yeni bir anahtar çifti oluşturmanız gerekecektir.

Parolayı değiştirmek veya kaldırmak için şunu yazmanız yeterlidir:

ssh-keygen -p
Enter file in which the key is (/root/.ssh/id_rsa):

Değiştirmek istediğiniz anahtarın konumunu yazabilir veya varsayılan değeri kabul etmek için ENTER tuşuna basabilirsiniz:

Enter old passphrase:

Değiştirmek istediğiniz eski parolayı girin. Daha sonra yeni bir parola girmeniz istenecektir:

Enter new passphrase (empty for no passphrase):
Enter same passphrase again:

Buraya yeni parolanızı girin veya parolayı kaldırmak için ENTER tuşuna basın.

SSH Anahtar Parmak İzini Görüntüleme

Her SSH anahtar çifti, anahtarları benzersiz bir şekilde tanımlamak için kullanılabilecek tek bir şifreleme “parmak izini” paylaşır. Bu, çeşitli durumlarda faydalı olabilir.

Bir SSH anahtarının parmak izini bulmak için şunu yazın:

ssh-keygen -l
Enter file in which the key is (/root/.ssh/id_rsa):

Anahtarın doğru konumu buysa ENTER tuşuna basabilir, aksi takdirde revize edilen konumu girebilirsiniz . Anahtarın bit uzunluğunu, parmak izini, oluşturulduğu hesabı ve ana bilgisayarı ve kullanılan algoritmayı içeren bir dize verilecektir:

4096 8e:c4:82:47:87:c2:26:4b:68:ff:96:1a:39:62:9e:4e  demo@test (RSA)

Genel (Public) SSH Anahtarınızı SSH-Copy-ID ile bir Sunucuya Kopyalama

Ortak anahtarınızı bir sunucuya kopyalamak ve parola olmadan kimlik doğrulamanızı sağlamak için bir dizi yaklaşım izlenebilir.

Şu anda sunucunuzda yapılandırılmış parola tabanlı SSH erişiminiz varsa ve ssh-copy-id yardımcı programı yüklediyseniz, bu basit bir işlemdir. Araç ssh-copy-id, birçok Linux dağıtımının OpenSSH paketine dahil edilmiştir, bu nedenle büyük olasılıkla varsayılan olarak yüklenebilir.

Bu seçeneğe sahipseniz, ortak anahtarınızı yazarak kolayca aktarabilirsiniz:

ssh-copy-id username@remote_host

Bu, sizden uzak sistemdeki kullanıcı hesabının parolasını soracaktır:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:f3:d4:f9:77:fe:aa:aa:aa:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
demo@111.111.11.111's password:

Parolayı yazdıktan sonra, ~/.ssh/id_rsa.pub anahtarınızın içeriği kullanıcı hesabı dosyasının sonuna eklenecektir :~/.ssh/authorized_keys

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'demo@111.111.11.111'"
and check to make sure that only the key(s) you wanted were added.

Artık o hesaba şifre olmadan giriş yapabilirsiniz:

ssh username@remote_host

Genel (Public) SSH Anahtarınızı SSH-Copy-ID Olmadan Bir Sunucuya Kopyalama

Kullanılabilir ssh-copy-id yardımcı programınız yoksa, ancak uzak sunucuya parola tabanlı SSH erişiminiz varsa, ortak anahtarınızın içeriğini farklı bir şekilde kopyalayabilirsiniz.

Anahtarın içeriğini çıkarabilir ve ssh komuta aktarabilirsiniz. Uzak tarafta, ~/.ssh dizinin var olduğundan emin olabilir ve ardından iletilen içeriği ~/.ssh/authorized_keys dosyaya ekleyebilirsiniz:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Uzak hesap için parola sağlamanız istenecektir:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
demo@111.111.11.111's password:

Parolayı girdikten sonra, anahtarınız kopyalanacak ve parola olmadan oturum açmanıza izin verilecektir:

ssh username@remote_IP_host

Genel (Public) SSH Anahtarınızı Manuel Olarak Bir Sunucuya Kopyalama

Parola tabanlı SSH erişiminiz yoksa, ortak anahtarınızı uzak sunucuya manuel olarak eklemeniz gerekecektir.

Yerel makinenizde, ortak anahtar dosyanızın içeriğini aşağıdakileri yazarak bulabilirsiniz:

cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVkert5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQ5t5HGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6S5t51BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Bu değeri kopyalayabilir ve uzak sunucudaki uygun konuma el ile yapıştırabilirsiniz. Uzak sunucuda başka yollarla oturum açmanız gerekecektir.

Uzak sunucuda, ~/.ssh zaten mevcut değilse dizini oluşturun:

mkdir -p ~/.ssh

~/.ssh/authorized_keys Daha sonra, aşağıdakileri yazarak dosyayı oluşturabilir veya ekleyebilirsiniz :

echo public_key_string >> ~/.ssh/authorized_keys

Artık uzak sunucuda parola olmadan oturum açabilmeniz gerekir.

Temel Bağlantı Talimatları

Aşağıdaki bölüm, SSH ile bir sunucuya nasıl bağlanılacağıyla ilgili bazı temel bilgileri kapsayacaktır.

Uzak Sunucuya Bağlanma

Uzak bir sunucuya bağlanmak ve orada bir kabuk oturumu açmak için sshkomutu kullanabilirsiniz.

En basit biçim, yerel makinenizdeki kullanıcı adınızın uzak sunucudakiyle aynı olduğunu varsayar. Bu doğruysa, aşağıdakileri kullanarak bağlanabilirsiniz:

ssh remote_host

Uzak sunucuda kullanıcı adınız farklıysa, uzak kullanıcının adını şu şekilde iletmeniz gerekir:

ssh username@remote_host

Yeni bir ana bilgisayara ilk kez bağlandığınızda, şuna benzeyen bir mesaj göreceksiniz:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Uzak ana bilgisayarın orijinalliğini kabul etmek için yes yazın .

Parola doğrulama kullanıyorsanız, burada uzak hesap için parola istenir. SSH anahtarları kullanıyorsanız, ayarlanmışsa özel anahtarınızın (private key) parolası sorulacak, aksi takdirde otomatik olarak oturum açacaksınız.

Uzak Sunucuda Tek Komut Çalıştırma

Bir kabuk oturumu oluşturmak yerine uzak sunucuda tek bir komut çalıştırmak için, aşağıdaki gibi bağlantı bilgilerinden sonra komutu ekleyebilirsiniz:

ssh username@remote_host command_to_run

Bu, uzak ana bilgisayara bağlanacak, kimlik bilgilerinizle kimlik doğrulaması yapacak ve belirttiğiniz komutu yürütecektir. Ardından bağlantı hemen kapanacaktır.

Farklı Bağlantı Noktasına Sahip Bir Sunucuda Oturum Açma

Varsayılan olarak bir sunucudaki SSH arka plan programı 22. port üzerinde çalışır. SSH istemciniz, bağlanmaya çalışırken durumun böyle olduğunu varsayacaktır. SSH sunucunuz standart olmayan bir bağlantı noktasını dinliyorsa (bu daha sonraki bir bölümde gösterilmiştir), istemcinizle bağlantı kurarken yeni bağlantı noktası numarasını belirtmeniz gerekecektir.

Bunu, -p seçenekle bağlantı noktası numarasını belirterek yapabilirsiniz:

ssh -p port_num username@remote_host

Uzak sunucunuzda her oturum açtığınızda bunu yapmak zorunda kalmamak için ~/.ssh, yerel bilgisayarınızın ana dizini içindeki dizinde bir yapılandırma dosyası oluşturabilir veya düzenleyebilirsiniz.

Dosyayı şimdi yazarak düzenleyin veya oluşturun:

nano ~/.ssh/config

Burada, ana bilgisayara özel yapılandırma seçeneklerini ayarlayabilirsiniz. Yeni bağlantı noktanızı belirtmek için şuna benzer bir biçim kullanın:~/.ssh/config

Host remote_alias
    HostName remote_host
    Port port_num

Bu, komut satırında belirli bağlantı noktası numarasını belirtmeden oturum açmanıza olanak tanır.

Parola Yazmaktan Kaçınmak için SSH Anahtarlarınızı SSH Aracısına Ekleme

Özel SSH anahtarınızda (private key) bir parolanız varsa, uzak bir ana bilgisayara bağlanmak için her kullandığınızda parolayı girmeniz istenecektir.

Bunu tekrar tekrar yapmaktan kaçınmak için bir SSH aracısı çalıştırabilirsiniz. Bu küçük yardımcı program, parolayı ilk kez girdikten sonra özel anahtarınızı (private key) saklar. Terminal oturumunuz süresince mevcut olacak ve gelecekte parolayı yeniden girmeden bağlanmanıza olanak tanıyacaktır.

Bu, SSH kimlik bilgilerinizi iletmeniz gerektiğinde de önemlidir (daha sonra gösterilmiştir).

SSH Agent’ı başlatmak için yerel terminal oturumunuza aşağıdakini yazın:

eval $(ssh-agent)
Agent pid 10891

Bu, aracı programını başlatacak ve arka plana yerleştirecektir. Şimdi, anahtarınızı yönetebilmesi için özel anahtarınızı (private key) aracıya eklemeniz gerekir:

ssh-add
Enter passphrase for /home/demo/.ssh/id_rsa:
Identity added: /home/demo/.ssh/id_rsa (/home/demo/.ssh/id_rsa)

Parolanızı girmeniz gerekecektir (eğer ayarlanmışsa). Daha sonra, kimlik dosyanız aracıya eklenir ve parolayı yeniden girmek zorunda kalmadan oturum açmak için anahtarınızı kullanmanıza olanak tanır.

Bir Sunucuda Kullanmak için SSH Kimlik Bilgilerinizi Yönlendirme

Başka bir sunucu içinden bir sunucuya şifresiz bağlanabilmek istiyorsanız, SSH anahtar bilgilerinizi iletmeniz gerekecektir. Bu, yerel bilgisayarınızdaki kimlik bilgilerini kullanarak bağlı olduğunuz sunucu aracılığıyla başka bir sunucuya kimlik doğrulaması yapmanıza olanak tanır.

Başlamak için, SSH aracınızı başlatmış ve aracıya SSH anahtarınızı eklemiş olmanız gerekir (öncesine bakın). Bu yapıldıktan sonra, -A seçeneği kullanarak ilk sunucunuza bağlanmanız gerekir . Bu, kimlik bilgilerinizi bu oturum için sunucuya iletir:

ssh -A username@remote_host

Buradan, SSH anahtarınızın erişim yetkisine sahip olduğu diğer herhangi bir ana bilgisayara SSH girebilirsiniz. Özel SSH anahtarınız(private key) bu sunucuda bulunuyormuş gibi bağlanacaksınız.

Sunucu Tarafı Yapılandırma Seçenekleri

Bu bölüm, sunucunuzun yanıt verme şeklini ve ne tür bağlantılara izin verildiğini şekillendirebilecek bazı yaygın sunucu tarafı yapılandırma seçeneklerini içerir.

Parola Doğrulamayı Devre Dışı Bırakma

Yapılandırılmış, test edilmiş ve düzgün çalışan SSH anahtarlarınız varsa, parola doğrulamasını devre dışı bırakmak muhtemelen iyi bir fikirdir. Bu, herhangi bir kullanıcının bir parola kullanarak SSH ile oturum açmasını önleyecektir.

Bunu yapmak için uzak sunucunuza bağlanın ve /etc/ssh/sshd_config dosyayı root veya sudo ayrıcalıklarıyla açın:

sudo nano /etc/ssh/sshd_config

Dosyanın içinde yönergeyi arayın PasswordAuthentication. Yorum yapıldıysa(#), yorumunu kaldırın. Şifre girişlerini devre dışı bırakmak için no ayarlayın :/etc/ssh/sshd_config

PasswordAuthentication no

Değişikliği yaptıktan sonra dosyayı kaydedip kapatın. Değişiklikleri uygulamak için SSH hizmetini yeniden başlatmanız gerekir.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

Artık sistemdeki tüm hesaplar şifre kullanarak SSH ile giriş yapamayacak.

SSH Daemon’un Çalıştığı Portu Değiştirme

Bazı yöneticiler, SSH’nin üzerinde çalıştığı varsayılan bağlantı noktasını değiştirmenizi önerir. Bu, sunucunuzun otomatik botlardan maruz kaldığı kimlik doğrulama girişimlerinin sayısını azaltmaya yardımcı olabilir.

SSH arka plan programının dinlediği bağlantı noktasını değiştirmek için uzak sunucunuzda oturum açmanız gerekir. sshd_config dosyasını, o kullanıcıyla oturum açarak veya aşağıdakileri kullanarak root ayrıcalıklarıyla uzak sistemde açın sudo:

sudo nano /etc/ssh/sshd_config

İçeri girdikten sonra, belirtimi bularak ve Port 22 kullanmak istediğiniz bağlantı noktasını yansıtacak şekilde değiştirerek SSH’nin üzerinde çalıştığı bağlantı noktasını değiştirebilirsiniz. Örneğin, bağlantı noktasını olarak değiştirmek için 4444 bunu dosyanıza koyun:/etc/ssh/sshd_config

#Port 22
Port 4444

İşiniz bittiğinde dosyayı kaydedin ve kapatın. Değişiklikleri uygulamak için SSH arka plan programını yeniden başlatmanız gerekir.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

Arka plan programı yeniden başladıktan sonra, bağlantı noktası numarasını (önceki bir bölümde gösterilmiştir) belirterek kimlik doğrulaması yapmanız gerekecektir.

SSH Üzerinden Bağlanabilen Kullanıcıların Sınırlandırılması

SSH aracılığıyla oturum açabilen kullanıcı hesaplarını açıkça sınırlamak için, her biri SSH arka plan programı yapılandırma dosyasını düzenlemeyi içeren birkaç farklı yaklaşım uygulayabilirsiniz.

Uzak sunucunuzda, bu dosyayı şimdi root veya sudo ayrıcalıklarıyla açın:

sudo nano /etc/ssh/sshd_config

Giriş yapmasına izin verilen hesapları belirlemenin ilk yöntemi AllowUsers yönergeyi kullanmaktır. AllowUsers Dosyadaki yönergeyi arayın . Bir tane yoksa, herhangi bir yerde oluşturun. Yönergeden sonra, SSH üzerinden giriş yapmasına izin verilmesi gereken kullanıcı hesaplarını listeleyin: /etc/ssh/sshd_config

AllowUsers user1 user2

Dosyayı kaydedin ve kapatın. Değişikliklerinizi uygulamak için arka plan programını yeniden başlatın.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

AllowGroups Grup yönetimi konusunda daha rahatsanız, bunun yerine yönergeyi kullanabilirsiniz . Bu durumda, SSH erişimine izin verilmesi gereken tek bir grup eklemeniz yeterlidir (bu grubu oluşturacağız ve anlık olarak üye ekleyeceğiz): /etc/ssh/sshd_config

AllowGroups sshmembers

Dosyayı kaydedin ve kapatın.

Şimdi, şunu yazarak belirttiğiniz grupla eşleşen bir sistem grubu (ev dizini olmadan) oluşturabilirsiniz:

sudo groupadd -r sshmembers

İhtiyacınız olan kullanıcı hesaplarını bu gruba eklediğinizden emin olun. Bu yazarak yapılabilir:

sudo usermod -a -G sshmembers user1
sudo usermod -a -G sshmembers user2

Şimdi, değişikliklerinizi uygulamak için SSH arka plan programını yeniden başlatın.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

Root Girişini Devre Dışı Bırakma

sudoAyrıcalıklara sahip bir SSH kullanıcı hesabı kurduktan sonra, SSH üzerinden root oturum açmayı tamamen devre dışı bırakmanız önerilir .

Bunu yapmak için, uzak sunucunuzda root veya sudo ile SSH arka plan programı yapılandırma dosyasını açın.

sudo nano /etc/ssh/sshd_config

İçeride, adlı bir yönerge arayın PermitRootLogin. Yorum yapıldıysa yorumunu kaldırın. Değeri “no” olarak değiştirin: /etc/ssh/sshd_config

PermitRootLogin no

Dosyayı kaydedin ve kapatın. Değişikliklerinizi uygulamak için SSH arka plan programını yeniden başlatın.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

Belirli Komutlar için Root Erişimine İzin Verme

Root erişimini genel olarak devre dışı bırakmak isteyebileceğiniz, ancak belirli uygulamaların doğru çalışmasına izin vermek için etkinleştirebileceğiniz bazı durumlar vardır. Bunun bir örneği bir yedekleme rutini olabilir.

authorized_keysBu , hesabı kullanmaya yetkili SSH anahtarlarını içeren root kullanıcının dosyası aracılığıyla gerçekleştirilebilir .

Bu işlem için kullanmak istediğiniz yerel bilgisayarınızdan anahtarı (her otomatik işlem için yeni bir anahtar oluşturmanızı öneririz) authorized_keys sunucudaki root kullanıcının dosyasına ekleyin. Buradaki komutla göstereceğiz ssh-copy-id, ancak diğer bölümlerde tartıştığımız anahtar kopyalama yöntemlerinden herhangi birini kullanabilirsiniz:

ssh-copy-id root@remote_host

Şimdi, uzak sunucuya giriş yapın. Dosyadaki girişi ayarlamamız gerekecek authorized_keys, bu yüzden root veya sudo erişimi ile açın:

sudo nano /root/.ssh/authorized_keys

Yüklediğiniz anahtarın bulunduğu satırın başına, command=bu anahtarın geçerli olduğu komutu tanımlayan bir liste ekleyin. Bu, yürütülebilir dosyanın tam yolunu ve ayrıca tüm argümanları içermelidir: /root/.ssh/authorized_keys

command="/path/to/command arg1 arg2" ssh-rsa ...

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Şimdi sshd_config dosyayı root veya sudo ayrıcalıklarıyla açın:

sudo nano /etc/ssh/sshd_config

Yönergeyi bulun PermitRootLogin ve değeri olarak değiştirin forced-commands-only. Bu, yalnızca anahtar için bir komut belirtildiğinde SSH anahtarı oturum açmalarının root kullanmasına izin verir: /etc/ssh/sshd_config

PermitRootLogin forced-commands-only

Dosyayı kaydedin ve kapatın. Değişikliklerinizi uygulamak için SSH arka plan programını yeniden başlatın.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

X Uygulama Ekranlarını İstemciye Yönlendirme

SSH arka plan programı, sunucudaki X uygulamalarının görüntüsünü istemci makineye otomatik olarak iletmek üzere yapılandırılabilir. Bunun doğru çalışması için, istemcinin yapılandırılmış ve etkinleştirilmiş bir X windows sistemine sahip olması gerekir.

Bu işlevi etkinleştirmek için uzak sunucunuzda oturum açın ve sshd_config dosyayı root olarak veya sudo ayrıcalıklarıyla düzenleyin:

sudo nano /etc/ssh/sshd_config

Yönergeyi arayın X11Forwarding. Yorum yapıldıysa, yorumunu kaldırın (#). Gerekirse oluşturun ve değeri “yes” olarak ayarlayın:/etc/ssh/sshd_config

X11Forwarding yes

Dosyayı kaydedin ve kapatın. Bu değişiklikleri uygulamak için SSH arka plan programınızı yeniden başlatın.

Ubuntu/Debian’da:

sudo service ssh restart

CentOS/Fedora’da:

sudo service sshd restart

Sunucuya bağlanmak ve bir uygulamanın ekranını iletmek için -X, bağlantı sırasında istemciden seçeneği iletmeniz gerekir:

ssh -X username@remote_host

Bu oturum aracılığıyla sunucuda başlatılan grafik uygulamaları yerel bilgisayarda görüntülenmelidir. Performans biraz yavaş olabilir, ancak bir tutamda çok yardımcı olur.

İstemci Tarafı Yapılandırma Seçenekleri

Bir sonraki bölümde, bağlantının istemci tarafında yapabileceğiniz bazı ayarlamalara odaklanacağız.

Sunucuya Özgü Bağlantı Bilgilerini Tanımlama

Yerel bilgisayarınızda, bağlandığınız sunucuların bazıları veya tümü için ayrı yapılandırmalar tanımlayabilirsiniz. ~/.ssh/config Bunlar , SSH istemciniz her çağrıldığında okunan dosyada saklanabilir .

Bu dosyayı yerel bilgisayarınızdaki metin düzenleyicinizde oluşturun veya açın:

nano ~/.ssh/config

İçeride, her birini bir Host anahtar kelime ve ardından bir takma adla tanıtarak bireysel yapılandırma seçeneklerini tanımlayabilirsiniz. ssh_config Bunun altında ve girintili olarak, man sayfasında bulunan direktiflerden herhangi birini tanımlayabilirsiniz :

man ssh_config

Örnek bir yapılandırma şöyle olacaktır:~/.ssh/config

Host testhost
    HostName your_domain
    Port 4444
    User demo

Ardından , basitçe şunu yazarak kullanıcı adını kullanarak your_domain bağlantı noktasına bağlanabilirsiniz: 4444 demo

ssh testhost

Birden fazla ana bilgisayarı eşleştirmek için joker karakterler de kullanabilirsiniz. Daha sonraki eşleşmelerin öncekileri geçersiz kılabileceğini unutmayın. Bu nedenle, en genel eşleşmelerinizi en üste koymalısınız. Örneğin, tüm bağlantıları varsayılan your_domainolarak, dosyanızda bunu bulundurarak geçersiz kılma ile X iletmesine izin vermeyecek şekilde ayarlayabilirsiniz: ~/.ssh/config

Host *
    ForwardX11 no

Host testhost
    HostName your_domain
    ForwardX11 yes
    Port 4444
    User demo

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Zaman Aşımını Önlemek için Bağlantıları Canlı Tutma

Hazır olmadan önce SSH oturumlarıyla bağlantınızın kesildiğini fark ederseniz, bağlantınızın zaman aşımına uğraması olasıdır.

Bu durumdan kaçınmak için istemcinizi sunucuya sık sık bir paket gönderecek şekilde yapılandırabilirsiniz:

Yerel bilgisayarınızda, dosyanızı düzenleyerek bunu her bağlantı için yapılandırabilirsiniz ~/.ssh/config. Şimdi açın:

nano ~/.ssh/config

Zaten yoksa, dosyanın en üstünde tüm ana bilgisayarlarla eşleşecek bir bölüm tanımlayın. ServerAliveIntervalHer iki dakikada bir sunucuya bir paket göndermek için “120” olarak ayarlayın . Bu, sunucuya bağlantıyı kapatmamasını bildirmek için yeterli olmalıdır:~/.ssh/config

Host *
    ServerAliveInterval 120

İşiniz bittiğinde dosyayı kaydedin ve kapatın.

Ana Bilgisayar Kontrolünü Devre Dışı Bırakma

Varsayılan olarak, yeni bir sunucuya her bağlandığınızda, uzak SSH arka plan programının ana bilgisayar anahtarı parmak izi size gösterilecektir.

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:aa:d4:f9:77:fe:73:aa:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Bu, bağlanmaya çalıştığınız ana bilgisayarın gerçekliğini doğrulayabilmeniz ve kötü niyetli bir kullanıcının uzak ana bilgisayar gibi davranmaya çalıştığı örnekleri tespit edebilmeniz için yapılandırılmıştır.

Bazı durumlarda, bu özelliği devre dışı bırakmak isteyebilirsiniz. Not : Bu büyük bir güvenlik riski olabilir, bu nedenle sisteminizi bu şekilde kurarsanız ne yaptığınızı bildiğinizden emin olun.

Değişikliği yapmak için ~/.ssh/configdosyayı yerel bilgisayarınızda açın:

nano ~/.ssh/config

Zaten yoksa, dosyanın en üstünde tüm ana bilgisayarlarla eşleşecek bir bölüm tanımlayın. Dosyaya otomatik olarak yeni ana bilgisayarlar eklemek için StrictHostKeyCheckingyönergeyi olarak ayarlayın . Yeni veya değiştirilen ana bilgisayarlarda uyarı vermemek için olarak ayarlayın :noknown_hostsUserKnownHostsFile/dev/null~/.ssh/config

Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

Diğer ana bilgisayarlar için bu seçenekleri tersine çevirerek duruma göre denetimi etkinleştirebilirsiniz. StrictHostKeyChecking için varsayılan ask: ~/.ssh/config

Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

Host testhost
    HostName your_domain
    StrictHostKeyChecking ask
    UserKnownHostsFile /home/demo/.ssh/known_hosts

SSH’yi Tek Bir TCP Bağlantısı Üzerinden Çoğullama

Yeni bir TCP bağlantısı kurmanın istediğinizden daha uzun sürebileceği durumlar vardır. Aynı makineye birden fazla bağlantı yapıyorsanız, çoğullamadan yararlanabilirsiniz.

SSH çoğullama, birden çok SSH oturumu için aynı TCP bağlantısını yeniden kullanır. Bu, yeni bir oturum oluşturmak için gerekli çalışmaların bir kısmını ortadan kaldırarak, muhtemelen işleri hızlandırır. Bağlantı sayısını sınırlamak başka nedenlerle de yardımcı olabilir.

Çoğullamayı ayarlamak için bağlantıları manuel olarak ayarlayabilir veya istemcinizi, mümkün olduğunda çoğullamayı otomatik olarak kullanacak şekilde yapılandırabilirsiniz. Burada ikinci seçeneği göstereceğiz.

Çoğullamayı yapılandırmak için yerel makinenizde SSH istemcinizin yapılandırma dosyasını düzenleyin:

nano ~/.ssh/config

Dosyanın en üstünde bir joker ana bilgisayar tanımınız yoksa, şimdi bir tane ekleyin ( Host *). Çoğullama yapılandırmamızı oluşturmak için ControlMasterControlPath ve değerlerini ayarlayacağız .ControlPersist

ControlMaster Mümkünse çoğullamaya otomatik olarak izin verebilmek için “otomatik” olarak ayarlanmalıdır . Soketi kontrol etmenin ControlPathyolunu belirleyecektir. İlk oturum bu soketi oluşturacak ve sonraki oturumlar, kullanıcı adı, ana bilgisayar ve bağlantı noktası ile etiketlendiğinden onu bulabilecektir.

ControlPersistSeçeneğin olarak ayarlanması, 1ilk ana bağlantının arka plana alınmasına izin verecektir. TCP bağlantısının, son SSH oturumu kapatıldıktan 1bir saniye sonra otomatik olarak sonlandırılacağını belirtir:/.ssh/config

Host *
    ControlMaster auto
    ControlPath ~/.ssh/multiplex/%r@%h:%p
    ControlPersist 1

İşiniz bittiğinde dosyayı kaydedin ve kapatın. Şimdi, kontrol yolunda belirttiğimiz dizini gerçekten oluşturmamız gerekiyor:

mkdir ~/.ssh/multiplex

Artık aynı makine ile kurulan tüm oturumlar mevcut soket ve TCP bağlantısını kullanmaya çalışacak. Son oturum gerçekleştiğinde, bağlantı bir saniye sonra kesilir.

-SHerhangi bir nedenle çoğullama yapılandırmasını geçici olarak atlamanız gerekirse, bunu şu şekilde bayrağı ileterek yapabilirsiniz none:

ssh -S none username@remote_host

SSH Tünellerini Ayarlama

Diğer trafiği güvenli bir SSH tüneli üzerinden tünellemek, kısıtlayıcı güvenlik duvarı ayarlarını aşmanın mükemmel bir yoludur. Ayrıca, aksi takdirde şifrelenmemiş ağ trafiğini şifrelemenin harika bir yoludur.

Bir Sunucuya Yerel Tünel Oluşturmayı Yapılandırma

SSH bağlantıları, yerel ana bilgisayardaki bağlantı noktalarından uzak ana bilgisayardaki bağlantı noktalarına giden trafiği tünellemek için kullanılabilir.

Yerel bağlantı, uzak ana bilgisayarınız aracılığıyla yerel bilgisayarınızdan bir ağ konumuna erişmenin bir yoludur. Öncelikle uzak sunucunuza bir SSH bağlantısı kurulur. Uzak sunucuda, kullanıcı tarafından sağlanan harici (veya dahili) bir ağ adresine bağlantı yapılır ve bu konuma gelen trafik, belirli bir bağlantı noktasında yerel bilgisayarınıza tünellenir.

Bu genellikle bir güvenlik duvarını atlayarak daha az kısıtlı bir ağ ortamına tünel açmak için kullanılır. Diğer bir yaygın kullanım, uzak bir konumdan “yalnızca yerel ana bilgisayar” web arayüzüne erişmektir.

Uzak sunucunuza yerel bir tünel kurmak için -Lbağlanırken parametreyi kullanmanız ve üç parça ek bilgi sağlamanız gerekir:

  • Tünel bağlantılı bağlantıya erişmek istediğiniz yerel bağlantı noktası.
  • Uzak ana makinenizin bağlanmasını istediğiniz ana bilgisayar.
  • Uzak ana makinenizin bağlanmasını istediğiniz bağlantı noktası.

Bunlar, yukarıdaki sırada (iki nokta üst üste ile ayrılmış olarak) -Lbayrağa argüman olarak verilmiştir. Ayrıca -f, çalıştırmadan önce SSH’nin arka plana geçmesine neden olan -Nbayrağı ve uzak tarafta bir kabuk açmayan veya bir programı çalıştırmayan bayrağı da kullanacağız.

Örneğin, your_domainuzak ana bilgisayarınızdaki 80 numaralı bağlantı noktasına bağlanmak ve yerel makinenizde bağlantı 8888 numaralı bağlantı noktasında kullanılabilir hale getirmek için şunu yazabilirsiniz:

ssh -f -N -L 8888:your_domain:80 username@remote_host

Şimdi, yerel web tarayıcınızı ‘ye yönlendirirseniz , bağlantı noktasında 127.0.0.1:8888hangi içeriğin olduğunu görmelisiniz .your_domain80

Sözdizimi için daha genel bir kılavuz:

ssh -L your_port:site_or_IP_to_access:site_port username@host

Bağlantı arka planda olduğundan, onu öldürmek için PID’sini bulmanız gerekecek. Yönlendirdiğiniz bağlantı noktasını arayarak bunu yapabilirsiniz:

ps aux | grep 8888
1001      5965  0.0  0.0  48168  1136 ?        Ss   12:28   0:00 ssh -f -N -L 8888:your_domain:80 username@remote_host
1001      6113  0.0  0.0  13648   952 pts/2    S+   12:37   0:00 grep --colour=auto 8888

Ardından, satırın ikinci sütunundaki SSH komutunuzla eşleşen sayı olan PID’yi hedefleyerek işlemi sonlandırabilirsiniz:

kill 5965

Başka bir seçenek de bağlantıyı bayrak olmadan başlatmaktır. -fBu, bağlantıyı ön planda tutacak ve yönlendirme süresi boyunca terminal penceresini kullanmanıza engel olacaktır. Bunun yararı, yazarak tüneli kolayca öldürebilmenizdir CTRL-C.

Bir Sunucuya Uzak Tünel Açmayı Yapılandırma

SSH bağlantıları, yerel ana bilgisayardaki bağlantı noktalarından uzak ana bilgisayardaki bağlantı noktalarına giden trafiği tünellemek için kullanılabilir.

Uzak bir tünelde, uzak bir ana bilgisayara bağlantı yapılır. Tünelin oluşturulması sırasında bir uzak bağlantı noktası belirtilir. Uzak ana bilgisayardaki bu bağlantı noktası, daha sonra yerel bilgisayardan bağlanan bir ana bilgisayar ve bağlantı noktası kombinasyonuna tünellenir. Bu, uzak bilgisayarın yerel bilgisayarınız aracılığıyla bir ana bilgisayara erişmesine olanak tanır.

Bu, harici bağlantılara kilitlenmiş bir dahili ağa erişime izin vermeniz gerekiyorsa yararlı olabilir. Güvenlik duvarı ağ dışındaki bağlantılara izin veriyorsa, bu, uzak bir makineye bağlanmanıza ve o makineden dahili ağdaki bir konuma tünel trafiğine izin verecektir.

Uzak sunucunuza uzak bir tünel kurmak için -Rbağlanırken parametreyi kullanmanız ve üç parça ek bilgi sağlamanız gerekir:

  • Uzak ana bilgisayarın tünelli bağlantıya erişebileceği bağlantı noktası.
  • Yerel bilgisayarınızın bağlanmasını istediğiniz ana bilgisayar.
  • Yerel bilgisayarınızın bağlanmasını istediğiniz bağlantı noktası.

Bunlar, yukarıdaki sırada (iki nokta üst üste ile ayrılmış olarak) -Rbayrağa argüman olarak verilmiştir. Ayrıca -f, çalıştırmadan önce SSH’nin arka plana geçmesine neden olan -Nbayrağı ve uzak tarafta bir kabuk açmayan veya bir programı çalıştırmayan bayrağı da kullanacağız.

Örneğin, your_domainyerel bilgisayarımızdaki 80 numaralı bağlantı noktasına bağlanmak ve bağlantı noktasındaki uzak ana makinemizde bağlantıyı kullanılabilir hale getirmek için şunu 8888yazabilirsiniz:

ssh -f -N -R 8888:your_domain:80 username@remote_host

Şimdi, uzak ana bilgisayarda, bir web tarayıcısını açmak , bağlantı noktasındaki 127.0.0.1:8888içeriği görmenizi sağlar .your_domain80

Sözdizimi için daha genel bir kılavuz:

ssh -R remote_port:site_or_IP_to_access:site_port username@host

Bağlantı arka planda olduğundan, onu öldürmek için PID’sini bulmanız gerekecek. Yönlendirdiğiniz bağlantı noktasını arayarak bunu yapabilirsiniz:

ps aux | grep 8888
1001      5965  0.0  0.0  48168  1136 ?        Ss   12:28   0:00 ssh -f -N -R 8888:your_domain:80 username@remote_host
1001      6113  0.0  0.0  13648   952 pts/2    S+   12:37   0:00 grep --colour=auto 8888

Ardından, SSH komutunuzla eşleşen satırın ikinci sütunundaki sayı olan PID’yi hedefleyerek işlemi sonlandırabilirsiniz:

kill 5965

Başka bir seçenek de bağlantıyı bayrak olmadan başlatmaktır. -fBu, bağlantıyı ön planda tutacak ve yönlendirme süresi boyunca terminal penceresini kullanmanıza engel olacaktır. Bunun yararı, yazarak tüneli kolayca öldürebilmenizdir CTRL-C.

Uzak Sunucuya Dinamik Tünel Oluşturmayı Yapılandırma

SSH bağlantıları, yerel ana bilgisayardaki bağlantı noktalarından uzak ana bilgisayardaki bağlantı noktalarına giden trafiği tünellemek için kullanılabilir.

Dinamik tünel, yerel bilgisayarın uzak bir ana bilgisayar aracılığıyla diğer kaynaklara bağlanmasına izin vermesi bakımından yerel bir tünele benzer . Dinamik bir tünel, bunu yalnızca tek bir yerel bağlantı noktası belirterek yapar. Tünel oluşturma için bu bağlantı noktasından yararlanmak isteyen uygulamalar, paketlerin tünelin diğer tarafında doğru bir şekilde yeniden yönlendirilebilmesi için SOCKS protokolünü kullanarak iletişim kurabilmelidir.

Bu yerel bağlantı noktasına iletilen trafik, uzak ana bilgisayara gönderilir. Buradan, istenen uç konuma bağlantı kurmak için SOCKS protokolü yorumlanacaktır. Bu kurulum, SOCKS özellikli bir uygulamanın, birden fazla statik tünel olmadan uzak sunucu aracılığıyla herhangi bir sayıda konuma bağlanmasına olanak tanır.

-DBağlantıyı kurmak için , tünele erişmek istediğimiz yerel limanla birlikte bayrağı geçeceğiz . Ayrıca -f, çalıştırmadan önce SSH’nin arka plana geçmesine neden olan -Nbayrağı ve uzak tarafta bir kabuk açmayan veya bir programı çalıştırmayan bayrağı da kullanacağız.

Örneğin port üzerinde bir tünel kurmak için şunu 7777yazabilirsiniz:

ssh -f -N -D 7777 username@remote_host

Buradan, SOCKS uyumlu uygulamanızı (bir web tarayıcısı gibi) seçtiğiniz bağlantı noktasına yönlendirmeye başlayabilirsiniz. Uygulama, bilgilerini bağlantı noktasıyla ilişkili bir sokete gönderir.

Trafiği SOCKS bağlantı noktasına yönlendirme yöntemi uygulamaya bağlı olarak farklılık gösterecektir. Örneğin, Firefox’ta genel konum Tercihler > Gelişmiş > Ayarlar > El ile proxy yapılandırmaları’dır. --proxy-server=Chrome’da bayrak seti ile uygulamayı başlatabilirsiniz . Localhost arayüzünü ve ilettiğiniz portu kullanmak isteyeceksiniz.

Bağlantı arka planda olduğundan, onu öldürmek için PID’sini bulmanız gerekecek. Yönlendirdiğiniz bağlantı noktasını arayarak bunu yapabilirsiniz:

ps aux | grep 8888
1001      5965  0.0  0.0  48168  1136 ?        Ss   12:28   0:00 ssh -f -N -D 7777 username@remote_host
1001      6113  0.0  0.0  13648   952 pts/2    S+   12:37   0:00 grep --colour=auto 8888

Ardından, SSH komutunuzla eşleşen satırın ikinci sütunundaki sayı olan PID’yi hedefleyerek işlemi sonlandırabilirsiniz:

kill 5965

Başka bir seçenek de bağlantıyı bayrak olmadan başlatmaktır. -fBu, bağlantıyı ön planda tutacak ve yönlendirme süresi boyunca terminal penceresini kullanmanıza engel olacaktır. Bunun yararı, yazarak tüneli kolayca öldürebilmenizdir CTRL-C.

Bağlantıları Kontrol Etmek için SSH Kaçış Kodlarını Kullanma

Bir SSH oturumu kurduktan sonra bile, bağlantı üzerinde terminal içinden kontrol uygulamak mümkündür. Bunu, yerel SSH yazılımımızla bir oturumdan etkileşime girmemize izin veren SSH kaçış kodları adı verilen bir şeyle yapabiliriz.

İstemci Tarafından Bağlantıyı Kesmeye Zorlama (Sıkışmış veya Donmuş Bir Oturumdan Nasıl Çıkılır)

OpenSSH’nin büyük ölçüde fark edilmeyen en kullanışlı özelliklerinden biri, oturumun belirli yönlerini içeriden kontrol etme yeteneğidir.

~Bu komutlar, bir SSH oturumunda kontrol karakterinden başlayarak yürütülebilir . Kontrol komutları yalnızca yeni satırdan sonra yazılan ilk şeyse yorumlanacaktır, bu nedenle birini kullanmadan önce her zaman bir veya iki kez ENTER tuşuna basın.

En kullanışlı kontrollerden biri, istemciyle bağlantıyı kesme yeteneğidir. SSH bağlantıları genellikle sunucu tarafından kapatılır, ancak sunucu sorun yaşıyorsa veya bağlantı kopmuşsa bu sorun olabilir. İstemci tarafı bağlantı kesme kullanarak, bağlantı istemciden temiz bir şekilde kapatılabilir.

İstemciden gelen bir bağlantıyı kapatmak için ~noktalı kontrol karakterini ( ) kullanın. Bağlantınız sorun yaşıyorsa, muhtemelen sıkışmış bir terminal oturumunda olacaksınız. İstemci tarafı bağlantısını kesmek için geri bildirim olmamasına rağmen komutları yazın:

[ENTER]
~.

Bağlantı hemen kapanacak ve sizi yerel kabuk oturumunuza döndürecektir.

Arka Plana SSH Oturumu Yerleştirme

OpenSSH’nin büyük ölçüde fark edilmeyen en kullanışlı özelliklerinden biri, oturumun belirli yönlerini bağlantı içinden kontrol etme yeteneğidir.

~Bu komutlar, bir SSH bağlantısı içinden kontrol karakterinden başlayarak yürütülebilir . Kontrol komutları yalnızca yeni satırdan sonra yazılan ilk şeyse yorumlanır, bu nedenle ENTERbirini kullanmadan önce her zaman bir veya iki kez basın.

Bunun sağladığı bir yetenek, arka plana bir SSH oturumu koymaktır. Bunu yapmak için, kontrol karakterini ( ~) sağlamamız ve ardından bir görevi arka plana atmak için geleneksel klavye kısayolunu (CTRL-z) çalıştırmamız gerekir:

[ENTER]
~[CTRL-z]

Bu, bağlantıyı arka plana yerleştirecek ve sizi yerel kabuk oturumunuza döndürecektir. SSH oturumunuza geri dönmek için geleneksel iş kontrol mekanizmalarını kullanabilirsiniz.

En son arka plandaki görevinizi aşağıdakileri yazarak hemen yeniden etkinleştirebilirsiniz:

fg

Arka planda birden fazla göreviniz varsa, aşağıdakileri yazarak mevcut işleri görebilirsiniz:

jobs
[1]+  Stopped                 ssh username@some_host
[2]   Stopped                 ssh username@another_host

Ardından, yüzde işaretiyle ilk sütundaki dizini kullanarak görevlerden herhangi birini ön plana getirebilirsiniz:

fg %2

Mevcut Bir SSH Bağlantısında Bağlantı Noktası Yönlendirme Seçeneklerini Değiştirme

OpenSSH’nin büyük ölçüde fark edilmeyen en kullanışlı özelliklerinden biri, oturumun belirli yönlerini bağlantı içinden kontrol etme yeteneğidir.

~Bu komutlar, bir SSH bağlantısı içinden kontrol karakterinden başlayarak yürütülebilir . Kontrol komutları yalnızca yeni satırdan sonra yazılan ilk şeyse yorumlanacaktır, bu nedenle birini kullanmadan önce her zaman bir veya iki kez ENTER tuşuna basın.

Bunun izin verdiği bir şey, bir kullanıcının bağlantı kurulduktan sonra bağlantı noktası yönlendirme yapılandırmasını değiştirmesidir. Bu, anında bağlantı noktası yönlendirme kuralları oluşturmanıza veya kaldırmanıza olanak tanır.

Bu yetenekler, bir oturum sırasında kontrol karakteri ( ~) ve “C” kullanılarak erişilebilen SSH komut satırı arayüzünün bir parçasıdır:

[ENTER]
~C
ssh>

Size çok sınırlı sayıda geçerli komut içeren bir SSH komut istemi verilecektir. Kullanılabilir seçenekleri görmek için bu istemden yazabilirsiniz -h~vHiçbir şey döndürülmezse, birkaç kez kullanarak SSH çıktınızın ayrıntı düzeyini artırmanız gerekebilir :

[ENTER]
~v
~v
~v
~C
-h
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward

Gördüğünüz gibi, uygun seçenekleri kullanarak yönlendirme seçeneklerinden herhangi birini kolayca uygulayabilirsiniz (daha fazla bilgi için yönlendirme bölümüne bakın). İletim tipi harfinden önce “K” ile belirtilen ilişkili “kill” komutuyla da bir tüneli yok edebilirsiniz. Örneğin, yerel bir yönlendirmeyi ( -L) öldürmek için -KLkomutu kullanabilirsiniz. Bunun için sadece portu sağlamanız gerekecek.

Bu nedenle, ileriye doğru bir yerel bağlantı noktası kurmak için şunu yazabilirsiniz:

[ENTER]
~C
-L 8888:127.0.0.1:80

Yerel bilgisayarınızdaki bağlantı noktası 8888artık bağlandığınız ana bilgisayardaki web sunucusuyla iletişim kurabilecektir. Bitirdiğinizde, şunu yazarak ileriye doğru yırtabilirsiniz:

[ENTER]
~C
-KL 8888

Bitirirken

Yukarıdaki talimatlar, çoğu kullanıcının günlük olarak SSH hakkında ihtiyaç duyacağı bilgilerin çoğunu kapsamalıdır. Başka ipuçlarınız varsa veya favori yapılandırmalarınızı ve yöntemlerinizi paylaşmak istiyorsanız, aşağıdaki yorumları kullanmaktan çekinmeyin.

SSH anahtarların kullanımı ile ilgili bir önceki yazımıza da göz atabilirsiniz: Ubuntu 20.04’te SSH Keys (Anahtarları) Nasıl Oluşturulur ve Kullanılır?

Ayrıca SSH ile ilgili Wikipedia Türkçe sayfasına da bakabilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir