sshpass: Etkileşimsiz SSH Girişi için Mükemmel Bir Araç - Asla Üretim Sunucusunda Kullanmayın


Çoğu durumda, Linux sistem yöneticileri, bir parola sağlayarak, parolasız SSH oturumu açma yoluyla veya anahtar tabanlı SSH kimlik doğrulamasıyla SSH kullanarak uzak Linux sunucularında oturum açar.

SSH isteminin kendisine kullanıcı adı ile birlikte bir şifre de sağlamak isterseniz ne olur? sshpass'ın kurtarmaya geldiği yer burasıdır.

sshpass, komut isteminin kendisine parola (etkileşimsiz parola kimlik doğrulaması) sağlamamıza olanak tanıyan basit ve hafif bir komut satırı aracıdır, böylece otomatik kabuk komut dosyaları, cron zamanlayıcı aracılığıyla yedekleme almak üzere yürütülebilir.

ssh, şifrenin gerçekten etkileşimli bir klavye kullanıcısı tarafından sağlandığından emin olmak için düz TTY erişimini kullanır. Sshpass, ssh'yi ayrılmış bir tty'de çalıştırır ve onu, şifreyi etkileşimli bir kullanıcıdan aldığına inandırarak yanıltır.

Önemli: sshpass'ı kullanmanın en az güvenli olduğu kabul edilir, çünkü şifre tüm sistem kullanıcılarına komut satırında basit ile gösterilir. "ps" komutu. SSH Parolasız kimlik doğrulamasını kullanmanızı önemle tavsiye ederim.

Linux Sistemlerine sshpass'ı yükleyin

RedHat/CentOS tabanlı sistemlerde, gösterildiği gibi yum komutunu kullanarak kurulum yapabilmek için öncelikle sisteminizde Epel deposunu etkinleştirmeniz gerekir.

yum install sshpass
dnf install sshpass    [On Fedora 22+ versions]

Debian/Ubuntu ve türevlerinde gösterildiği gibi apt-get komutunu kullanarak kurabilirsiniz.

sudo apt-get install sshpass

Alternatif olarak, sshpass'ın en son sürümüne sahip olmak için kaynaktan yükleme yapabilirsiniz, önce kaynak kodunu indirin, ardından tar dosyasının içeriğini çıkartın ve şu şekilde yükleyin:

wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -xvf sshpass.tar.gz
cd sshpass-1.06
./configure
sudo make install 

Linux'ta sshpass Nasıl Kullanılır

sshpass, ssh ile birlikte kullanıldığında, aşağıdaki komutu vererek tüm sshpass kullanım seçeneklerini tam açıklamalarıyla birlikte görüntüleyebilirsiniz:

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

Daha önce de belirttiğim gibi, sshpass komut dosyası oluşturma açısından daha güvenilir ve kullanışlıdır; aşağıdaki örnek komutları inceleyin.

Kullanıcı adı ve şifre ile uzak Linux ssh sunucusuna (10.42.0.1) giriş yapın ve gösterildiği gibi uzak sistemin dosya sistemi disk kullanımını kontrol edin.

sshpass -p 'my_pass_here' ssh [email  'df -h' 

Önemli: Burada, pratik olarak güvenli olmayan şifre komut satırında sağlanır ve bu seçeneğin kullanılması önerilmez.

Ancak şifrenin ekranda görünmesini engellemek için -e bayrağını kullanabilir ve şifreyi SSHPASS ortam değişkeninin değeri olarak aşağıdaki gibi girebilirsiniz:

export SSHPASS='my_pass_here'
echo $SSHPASS
sshpass -e ssh [email  'df -h' 

Not: Yukarıdaki örnekte, SSHPASS ortam değişkeni yalnızca geçici amaçlıdır ve yeniden başlatma sırasında kaldırılacaktır.

SSHPASS ortam değişkenini kalıcı olarak ayarlamak için /etc/profile dosyasını açın ve dosyanın başına dışa aktarma ifadesini yazın:

export SSHPASS='my_pass_here'

Dosyayı kaydedin ve çıkın, ardından değişiklikleri uygulamak için aşağıdaki komutu çalıştırın:

source /etc/profile 

Öte yandan -f bayrağını da kullanabilir ve şifreyi bir dosyaya koyabilirsiniz. Bu şekilde dosyadan şifreyi aşağıdaki gibi okuyabilirsiniz:

sshpass -f password_filename ssh [email  'df -h'

Ayrıca, gösterildiği gibi scp kullanarak dosyaları aktarmak veya dosyaları SSH kullanarak rsync üzerinden yedekleme/senkronizasyon yapmak için sshpass'ı kullanabilirsiniz:

------- Transfer Files Using SCP ------- 
scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html

------- Backup or Sync Files Using Rsync -------
rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/

Daha fazla kullanım için sshpass kılavuz sayfasını okumanızı öneririm, şunu yazın:

man sshpass

Bu makalede, etkileşimli olmayan şifre kimlik doğrulamasını sağlayan basit bir araç olan sshpass'ı anlattık. Bu araçlar faydalı olsa da, ssh'nin daha güvenli ortak anahtar kimlik doğrulama mekanizmasının kullanılması önemle tavsiye edilir.

Lütfen, daha fazla tartışma için aşağıdaki geri bildirim bölümüne bir soru veya yorum bırakın.