Python İle SSH Bağlantısı Yapmak (Windows & Linux Cihazlarda)

Python ile SSH bağlantısı yaparak Putty gibi herhangi bir aracı program olmadan cihazlarınıza direkt bağlanabilir ve komutlar yolluyabilirsiniz. Üstelik Windows cihazlarınızda bile hiçbir problem yaşamadan SSH bağlantısı yapabilirsiniz.

SSH (Secure Shell) veya Güvenli Kabuk, ağ hizmetlerinin güvenli olmayan bir ağ üzerinde güvenli şekilde çalıştırılması için kullanılan kriptografik ağ protokolüdür. Özetle güvenli bir uzak sunucu bağlantı protokolüdür. SSH ile cihazlarınıza bağlanabilir ve onları yönetebilirsiniz. Ön tanımlı olarak 22 portunda çalışır.

Python ile SSH yapmak ise cihazlarınızla bağlantı kurmak ve onlara komutlar göndermek için oldukça kullanışlı bir yöntem. Böylece birden fazla cihazı yönettiğiniz bir ortamda işlerinizi Python ile oldukça kolaylaştırabilirsiniz. Örneğin bir IT personelinin ağındaki yüzlerce switche Python ile SSH bağlantısı yaptırarak CPU ve RAM kullanım miktarlarını otomatik kontrol ettirmesi yapılabilecek en basit örneklerden birisi. Öyleyse hemen dersimize başlayalım.

1. Basit Bir SSH Bağlantısı Yapmak

Python ile SSH bağlantısı yapabilmek için paramiko kütüphanesini kullanacağız. Bunun için ilk olarak paramiko kütüphanesini indirmelisiniz.

pip install paramiko

Ardından kütüphaneyi projemize dahil edebiliriz.

import paramiko

Şimdi ise örnek bir sunucuya bağlantı için aşağıdaki komutları kullanabiliriz.

ip = "51.xxx.xxx.124"
kullanici = "albatros"
sifre = "xxxxxx"
komut = "ls -al"
port = 22

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,kullanici,sifre,timeout = 10)

stdin,stdout,stderr = ssh.exec_command(komut)
sonuc = stdout.read()
print(sonuc.decode("utf-8"))

ssh.close()

Bu örnekte SSH bağlantısı yapacağımız sunucunun Ip adresi, kullanıcı adı, şifre ve gönderilecek komut gibi değerleri önceden tanımlayarak paramiko kütüphanesi ile bir client oluşturduk. Oluşturduğumuz client ile bağlantıyı yaparak komutu gönderdik ve komut sonrası terminale basılacak çıktıları ekrana yazdırdık. Son olarak ise bağlantımızı sonlandırdık.

Ekran çıktımız şu şekilde olacaktır:

2. Private Key ile SSH Bağlantısı Yapmak

Birçok kişi cihazlara sadece kullanıcı adı ve şifreyle girmek yerine oluşturdukları Private Key ile bağlanıyor. İçlerinde benimde olduğum bu grup daha güvenli bir cihaz bağlantısını sağlarken projesine birkaç satır daha komut eklemek zorunda kalacak maalesef. Ama hiç endişeye gerek kalmadan aşağıdaki örneği kullanarak başarılı bir SSH bağlantısı yapabilirsiniz.

ip = "51.xxx.xxx.124"
kullanici = "albatros"
sifre = "xxxxxx"
komut = "ls -al"
port = 22

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,kullanici,sifre,timeout = 10,key_filename="openssh")

stdin,stdout,stderr = ssh.exec_command(komut)
sonuc = stdout.read()
print(sonuc.decode("utf-8"))

ssh.close()

Burada ki openssh isimli dosya private keyimizin openssh formatındaki halidir. Puttygen ile oluşturduğunuz private keyi “Conversions” menüsünde yer alan “Export OpenSSH key (force new file format)” seçeneği ile kaydererek key_filename değişkenine atayabilirsiniz.

Not!: Eğer private keyinizi korumak için passphrase kullandıysanız connect() fonksiyonunda belirtmeyi unutmayınız.

ssh.connect(hostname,port,username,password,timeout = 10,key_filename="openssh",passphrase="test")

3. Sonuç

Yukarıdaki örneklerle artık rahat bir şekilde Python SSH bağlantısı işlemini yapabilirsiniz. Takıldığınız yerler olursa paramiko dökümantasyon sayfasını inceleyebilir ve aşağıdaki yorum kutusunu kullanabilirsiniz.

Paramiko dökümantasyon sayfasına gitmek için Tıklayınız