Sesi SSH non-interaktif
Jika Anda tidak perlu memiliki sesi interaktif di server jauh, Anda dapat mengeksekusi sshdi lingkungan tanpa tty, misalnya sebagai bagian dari tindakan Run Shell Script di Automator .
Anda perlu membuat program yang ketika dipanggil mencetak kata sandi ke standar keluar, misalnya skrip bash berikut yang Anda perlukan agar dapat dieksekusi menggunakan chmod +x pwd.sh:
#!/usr/bin/env bash
echo "password"
Kemudian, tetapkan SSH_ASKPASSvariabel lingkungan ke jalur ke program ini, dan kemudian jalankan sshdalam tindakan Automator, seperti ini:
export SSH_ASKPASS=/Users/danielbeck/pwd.sh
ssh user@hostname ls
Ketika tidak ada tty, tetapi SSH_ASKPASSdan DISPLAY(untuk X11, ditetapkan secara default) diatur, SSH mengeksekusi program yang ditentukan oleh SSH_ASKPASSdan menggunakan outputnya sebagai kata sandi. Ini dimaksudkan untuk digunakan dalam lingkungan grafis, sehingga sebuah jendela dapat muncul menanyakan kata sandi Anda. Dalam hal ini, kami hanya melewatkan jendela, mengembalikan kata sandi dari program kami. Anda dapat menggunakannya securityuntuk membaca dari gantungan kunci Anda, seperti ini:
#!/usr/bin/env bash
security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2
ls(pada sshbaris perintah) adalah perintah yang dieksekusi ketika sshtelah masuk, dan hasilnya dicetak dalam Automator. Anda tentu saja dapat mengarahkannya ke file untuk mencatat keluaran dari program yang Anda mulai.
Sesi SSH interaktif menggunakan sshpass
Saya mengunduh, mengompilasi, dan menginstal sshpassdan bekerja dengan sempurna. Inilah yang saya lakukan:
- Dapatkan alat pengembang Apple
- Unduh dan buka
sshpass-1.05.tar.gz
- Buka shell ke direktori
sshpass-1.05
- Lari
./configure
- Lari
make
- Jalankan
make install(Anda mungkin perlu sudountuk itu)
Sekarang program diinstal ke /usr/local/bin/sshpass. Jalankan menggunakan garis seperti berikut:
sshpass -pYourPassword ssh username@hostname
Anda dapat membaca kata sandi securitytepat sebelum melakukannya, dan menggunakannya seperti ini:
SSHPASSWORD=$( security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2 )
sshpass -p"$SSHPASSWORD" ssh username@hostname
Bungkus ini dalam fungsi shell dan Anda bisa mengetik misalnya ssh-yourhostnameuntuk menghubungkan, setelah itu mengambil dan memasukkan kata sandi secara otomatis.
STDIN is not a terminal. 2) Untuk sesi interaktif dengansshpass,-popsi tampaknya tidak melakukan apa pun. Tetapi menjalankansshpasssementaraSSH_ASKPASSdiatur tidak bekerja!