SSH üzerinde makineler 22 numaralı porttan iletişim kurarlar.

Varsayılan SSH portu nasıl değiştirilir ?

Uğur Akgül
4 min readOct 6, 2019

Oturduğunuz yerden birden fazla makineye erişim sağlamak istediğiniz durumlar oluyordur. Bu erişim aynı anda da olabilir farklı zamanlarda da. Bulut çağından önceki zamanda bile , “sistemci” diye bilinen insanların uzaktaki makineleri kontrol etmek için kullandığı yöntemlerden biri olan SSH bağlantısını gelin birlikte öğrenelim.

SSH , Secure Socket Shell (veya yaygın kullanımıyla Secure Shell) olarak bilinir. İçten içe okunuşunun “eseseyç” olduğunu bilmemize rağmen “eseshaş” diye okuyup , günlük konuşmada kullandığımız ; güvensiz bir ağ üzerinden uzaktaki bir cihaza “güvenli” bağlantı yapabilmeyi sağlayan ağ protokolüdür.

Uzaktaki bir bilgisayara bağlanırken TCP protokolünü kullanır ve varsayılan olarak 22 numaralı porttan bağlantı yapar. Windows/Linux içerisinden bağlantı yapılabilir.

Bir makineye SSH bağlantısı yapılabiliyorsa , o makinede SSH-server çalışıyordur. Kısacası SSH bağlantısını varsayılan olarak 22 numaralı portu dinleyerek bekleyen bir servis çalıştırır. Bu yazımda varsayılan port ayarını CentOS 7 ve Ubuntu/Debian sistemleri için değiştirmekten bahsedeceğim.

Öncelikle gözünüzü korkutmamak için Ubuntu/Debian sistemlerinden başlayalım. Kendi tecrübelerimden de yola çıkarak rahatlıkla söyleyebilirim ki Ubuntu dendiği zaman diğer Linux dağıtımlarına oranla daha kolay bir işle uğraşacağız demektir.

Daha önce de bahsettiğim gibi bir yere SSH ile bağlanabiliyorsak orada SSH-server çalışmaktadır ve varsayılan olarak 22 numaralı portu dinlemektedir. Bu servisin elbette bir “config” dosyası olacaktır ve biz o dosyayı değiştirerek varsayılan ayarlarla oynayabiliriz.

NOT: Yazımın devamında halihazırda çalışan bir sshd servisi olduğunu varsaymaktayım.

Ubuntu / Debian

Öncelikle ssh servisinin ayarlarını varsayılan olarak aldığı ve her tekrar çalıştırılmasında kontrol ettiği dosyayı bulup , içerisinde istediğimiz kısmı değiştirmeliyiz. Bunun için ;

sudo vi /etc/ssh/sshd_config

komutu ile sshd_config dosyasını açıyoruz. (vi kullanması zor olan arkadaşlar nano kullanabilir bu durumda komut sudo nano /etc/ssh/sshd_config olacaktır fakat nano varsayılan olarak kurulu gelmeyebilir.)

Dosyayı biraz inceledikten sonra içerisinde bulunan

#Port 22

şeklinde yazılan kısmı yorum olmaktan çıkarıp , 22 yerine istediğimiz port değerini yazıyoruz. Örnek vermek gerekirse ;

Port 2222

Bu işlemden sonra kaydedip , kapatabiliriz. (vi ile açanlar için kolaylıklar diliyorum :) )

En son olarak ssh servisini yeniden başlatmamız gerekmekte.

sudo service sshd restart

komutu ile servisi yeniden başlatıp , 2222 numaralı porttan dinleme işlemine başlayabiliriz.

Şimdi gelelim CentOS 7 için değişikliği yapmaya….

CentOS 7

NOT: CentOS 7 üzerinde değişiklik yapmadan önce SELinux hakkında biraz bilgi edinmenizi öneririm.

Öncelikle SELinux’un aktif olup olmadığını getenforce komutu ile öğrenebiliriz.

Buradan dönecek sonuçlar aşağıdaki gibi olabilir ;

  • Enabled
  • Permissive
  • Disabled

Enabled ise açık , Disabled ise kapalıdır. Permissive ise kullanıcı oturumuna özel olarak kapalıdır. Oturum yeniden açılırsa tekrar Enabled durumuna döner.

SELinux’un aktif olduğu durumdan bahsedelim ,

sudo vi /etc/ssh/sshd_config komutu ile dosyayı açabiliriz.

#Port 22 yazan yerdeki yorumu kaldırıp , istediğimiz Port numarasını yazabiliriz. Örneğin ;

Port 2222

Bu işlemi bitirdikten sonra kaydedip kapatabiliriz.

SELinux aktif olduğu için SELinux üzerinden de değişikliği gerçekleştirmeliyiz.

sudo semanage port -a -t ssh_port_t -p tcp <istenilen_port>

komutu ile semanage kullanarak SELinux üzerinde değişiklik yapabiliriz.

(NOT: semanage paketi yüklü değil ise , sudo yum -y install policycoreutils-python komutu ile yüklenebilir.)

(NOT 2: SELinux ile uğraşmak istemeyenler SELinux’u devre dışı bırakıp sshd_config dosyasını değiştirdikten sonra aşağıdaki adımdan devam edebilirler fakat eğer makine önemli bir makine ise SELinux’u devre dışı bırakmayı önermiyorum.)

Ek bir adım olarak kullanmak istediğimiz port numarasına Firewall üzerinden izin vermek zorundayız.

sudo firewall-cmd — permanent — zone=public — add-port=<istenilen_port>/tcp

sudo firewall-cmd — reload

komutu ile firewall üzerinden sshd_config dosyasına yazdığımız port numarasına izin verebiliriz.

Daha sonra sshd servisini yeniden başlatıp , değişen port numarası üzerinden bağlantımızı yapabiliriz.

sudo systemctl restart sshd.service

komutu sshd servisini yeniden başlatacaktır.

SSH Servisinin Kullandığı Portu Görebilmek

ss -tnlp|grep ssh

komutu ile ssh servisinin kullandığı portları görebiliriz. Komutun çıktısı aşağıdaki gibi olabilir. (Örnekte 2222 portunu kullandığımız için çıktıdaki *:2222 kısmına dikkat edelim. Bu kısım sizin değiştirmek istediğiniz port numarasını göstermelidir.)

LISTEN          0                128                              *:2222 *:*                                     users:((“sshd”,10783,3))
LISTEN 0 128 :::2222 :::* users:((“sshd”,10783,4))

Bir Yere SSH İle Bağlanırken Varsayılan Portu Değiştirmek

Makinenizden başka bir makineye SSH ile bağlanırken varsayılan port yine 22 numaralı porttur. Siz bu portu değiştirmek isterseniz , örnek olarak şöyle söyleyelim ;

Bir ssh-server bulunan makinenin SSH için dinlediği portu 2222 yaptınız ve başka bir makineden bu makineye SSH ile bağlanmak istiyorsunuz. Bu durumda 22 numaralı portu makine dinlemediği için oradan bağlanamazsınız. SSH bağlantısı yaparken de değişen portu bildirmeniz gerekecektir. Örnek vermek gerekirse:

Linux için

ssh kullanici@uzak-makine -p 2222

şeklinde bir -p parametresi ile varsayılan dışında bir port numarası sağlanabilir.

Windows için

Windows üzerinden SSH yapabilmenizi sağlayan program , Putty

SSH bağlantısı için kullanılan yardımcı uygulamalardan biri olan Putty içerisinde “port” kısmına istediğiniz portu yazmanız yeterli olacaktır.

Kapanış Notu

Eğer bu işlemleri yapmaya çalışırken , /etc klasörünüzde sshd_config isimli bir dosya görmediyseniz , makinenizde ssh-server değil de ssh-client çalışıyordur. Bu durumda zaten bulunduğunuz makineye ssh bağlantısı yapılamaz.

Zaman ayırıp okuduğunuz için teşekkür ederim , bir sonraki yazımda görüşmek üzere :)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Uğur Akgül
Uğur Akgül

Written by Uğur Akgül

Tech Lead, Platform Engineering @TurkNet // You can find me at https://www.linkedin.com/in/hikmetugurakgul/

No responses yet

Write a response