Etkileşimli olmayan SSH oturumları
Uzak sunucuda etkileşimli bir oturum yapmanız sshgerekmiyorsa tty, örneğin Automator'daki Kabuk Betiğini Çalıştır eyleminin bir parçası olmayan bir ortamda çalıştırabilirsiniz .
Çağrıldığında parolayı standart çıktıya yazdırmak için bir program oluşturmanız gerekir, örn. Aşağıdaki bash betiği kullanarak çalıştırılabilir yapmanız gerekir chmod +x pwd.sh:
#!/usr/bin/env bash
echo "password"
Ardından, SSH_ASKPASSortam değişkenini bu programın yoluna ayarlayın ve sshAutomator eyleminde aşağıdaki gibi çalıştırın :
export SSH_ASKPASS=/Users/danielbeck/pwd.sh
ssh user@hostname ls
Hiçbir yokken tty, ancak SSH_ASKPASSve DISPLAYayarlanır (X11, varsayılan olarak ayarlanan için), SSH ile belirtilen programı çalıştırır SSH_ASKPASSve şifre olarak çıkışını kullanır. Bu, grafiksel ortamlarda kullanılmak üzere tasarlanmıştır, böylece bir pencere açılır ve şifrenizi ister. Bu durumda, pencereyi atladık ve şifreyi programımızdan geri döndürdük. Bunun securityyerine anahtarlığınızdan okumak için kullanabilirsiniz :
#!/usr/bin/env bash
security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2
ls( sshkomut satırında) sshoturum açıldığında yürütülen komuttur ve çıktısı Automator'da yazdırılır. Tabii ki, başlattığınız programın çıktısını günlüğe kaydetmek için bir dosyaya yönlendirebilirsiniz.
Etkileşimli SSH oturumları sshpass
İndirdim, derledim ve yükledim sshpassve mükemmel çalıştı. İşte yaptım:
- Apple geliştirici araçlarını edinin
- İndirin ve açın
sshpass-1.05.tar.gz
- Dizine bir kabuk açma
sshpass-1.05
- Çalıştırmak
./configure
- Çalıştırmak
make
- Çalıştır
make install(ihtiyacınız olabilir sudo)
Şimdi program yüklenir /usr/local/bin/sshpass. Aşağıdaki gibi bir çizgi kullanarak yürütün:
sshpass -pYourPassword ssh username@hostname
Bunu securityyapmadan hemen önce şifreyi okuyabilir ve şu şekilde kullanabilirsiniz:
SSHPASSWORD=$( security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2 )
sshpass -p"$SSHPASSWORD" ssh username@hostname
Bunu bir kabuk işlevine sarın ssh-yourhostnameve parolayı otomatik olarak alması ve girmesi için örneğin bağlanmak için yazabilirsiniz .
STDIN is not a terminal. 2) ile etkileşimli oturumlar içinsshpass,-pseçenek görünüşe göre hiçbir şey yapmaz. Ama çalışansshpassederkenSSH_ASKPASSişi ayarlanır yapar!