Rsync komutlarını sunucudan sunucuya dosya yada veri yedeklemek için kullanıyorum. Kendi bash scriptimi yazdım ve bunu cronjob ile otomatikleştirmek istiyordum. Bu durumda karşı sunucunun şifresinin de girilmesi gerekiyordu. Bunun için sshpass uygulamasını yum aracılığı ile kuracağız ve tek satır kod oluşturarak tekrar tekrar şifre girme derdinden kurtulacağız ve otomatik sistemler içinde şifre zorunluluğunu aşmış olacağız.
Öncelikle sshpass uygulamasını paket yöneticiniz aracılığı ile kuralım:
Red Hat tabanlı dağıtımlar için
yum -y install sshpass
Eğer kurulum çalışmazsa yani bulamazsa epel kütüphanesini yükledikten sonra tekrar deneyin.
Debian tabanlı dağıtımlar için
sudo apt-get update -y
sudo apt-get install -y sshpass
Sonrasında ssh kodumuza aşağıdaki parametreyi ekleyin, basına:
sshpass -p "SIFRENIZ"
ŞİFRENİZ: Bu kısım bağlantı kuracağınız yada veri çekeceğiniz, göndereceğiniz sunucunun root giriş şifresi olacaktır.
Örnek bir rsync bağlantısı oluşturalım yukardaki ayarlarıda dahil edip:
sshpass -p "SIFRENIZ" rsync -avzu -t -l root@IP_ADRESI:/home/siteler/ /yedekler/
Yukarıdaki kodu çalıştırdığınızda ekstra bir şifre girme alanı olmayacak, direk sunucuya bağlanarak dosyaları çekmeye yada göndermeye başlayacaksınız.
Host key verification failed hatası alırsanız!
Bir sunucu için rsync kodunu ilk kez çalıştıracaksanız sertifika (güvenlik) hatasıyla karşılaşabilirsiniz.
sshpass komutu ile hata alırsanız, rsync kodunuzu sspass olmadan çalıştırın. Sizden bu sunucuya güvenip güvenmediğinizi soracak, yes diyerek onaylayın. Bu şekilde sshpass kodunu kullanmaya başlayabilirsiniz hata almadan.
Örnek hata mesajı:
Host key verification failed.
rsync error: unexplained error (code 255) at rsync.c(713) [sender=3.2.7]
Bu hatayı aldıktan sonra yukardaki örnekde olan sshpass bölümünü çıkarıp komutu çalıştırıyoruz:
rsync -avzu -t -l root@IP_ADRESI:/home/siteler/ /yedekler/
Sonrasında bize aşağıdaki gibi bir uyarı bölümü gelecek ve sunucuyu bilinenler listesine eklememizi isteyecek, yes yazıp enter yapacağız:
The authenticity of host '[xxxxxxxx.your-storagebox.de]:23 ([74.74.74.74]:23)' can't be established.
EC21519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Sonrasında karşı sunucunun şifresini girmemizi isteyecek:
Warning: Permanently added '[xxxxxxxx.your-storagebox.de]:23' (EC21519) to the list of known hosts.
[email protected]'s password:
Şifreyi girip enter yapın, aktarım başlayacak ve karşı sunucu güvenilir listeye eklenecek. Böylece artık sshpass komutunu sorunsuzca çalıştırabiliriz.
Bu işlemi croncob gibi otomatikleştirmek isteyenler rahatlıkla kullanabilirler, böylece istediğiniz bir zamanda rsync uygulamanızı yada kodunuzu çalıştırabilirsiniz.