sshpass: Parola Olmadan SSH Bağlantısı Kurmak
sshpass: Parola Olmadan SSH Bağlantısı Kurmak

19 Nov, 2022 3 dk

sshpass: Parola Olmadan SSH Bağlantısı Kurmak

19 Nov, 2022

3 dk

sshpass: Parola Olmadan SSH Bağlantısı Kurmak

Linux sunucular ile remote bağlantı kurmak için ssh ile parola kullanıyorsanız, bazı işleri otomatize etmenin de çok zor hatta parola olduğu için mümkün olmadığını deneyimlemiş olabilirsiniz. sshpass sayesinde bir parola etkileşimine girmeden remote bağlantı kurabiliyor ve komut çalıştırabiliyorsunuz. Bu ne demek, bir sunucuya bağlanıp bazı komutlar çalıştırıyorsanız ve bunları örneğin cronjob ile otomatize etmek istiyorsanız sshpass kullanabilirsiniz.

Kurulum

sudo apt install sshpass
# yum install sshpass // CentOS için
# dnf install sshpass  // Fedora için

#Yada sıfırdan build etmek için
#MacOs kullananlar bu şekilde yükleyebilirler. HomeBrew yada benzeri yerlerde official olarak bu paket yok dikkat edin.
wgethttp://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -xvf sshpass.tar.gz
cd sshpass-1.06
./configure
sudo make install

Nasıl Kullanılır?

h ile tüm parametreleri inceleyebiliriz.

sshpass -h

Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used
 

Burada da gördüğümüz üzere aslında 3 temel kullanımı mevcut.

  1. Parametre ile parolayı gönderme
  2. Enviroment üzerinden parolayı alma
  3. Parolayı dosyadan okuma
sshpass -p "secretPassword" ssh root@192.168.1.1

Bu şekilde doğrudan ssh bağlantısı yapabileceğiniz gibi bağlandığınız sunucuda bir komut da çalıştırabilirsiniz.

# df -h komutu sistemdeki diskleri ve boş alanları göstermektedir örneğin.
sshpass -p "secretPassword" ssh root@192.168.1.1 'df -h'

Ayrıca şekilde dosyadan okuma yada enviroment üzerinden okuma için de şu şekilde örnekler verebiliriz.

# env olarak export edip kullanabiliriz.
export SSHPASS='secretPass'

# Dosyadan okumak için de
sshpass -f passFile.txt ssh root@192.168.1.1 'df -h'

sshpass komutunu scp yada rsync ile de kullanmak mümkün

scp -r /var/www/html/example.com --rsh="sshpass -p 'secretPass' ssh -l root" 192.168.1.1:/var/www/html

rsync --rsh="sshpass -p 'secretPass' ssh -l root" 192.168.1.1:/data/backup/ /backup/

Siz yine de parolayı doğrudan production ortamlarında yazmamaya özen gösterin, nolur ne olmaz.

İLGİLİ MAKALELER
İLGİLİ KOD PARÇALARI