Mac OS X Lion dan sshpass

6

Saya telah meningkatkan dari Mac OS X Snow Leopard ke Lion . Saya menggunakan beberapa skrip dengan sshpass tetapi setelah saya memutakhirkan ke Lion, kesalahan berikut muncul:

Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug1: permanently_drop_suid: 502
ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory

Saya hanya dapat terhubung dengan sshpass (atau ketikkan kata sandi secara manual). Tidak ada cara kunci publik / pribadi. Saya telah menginstal ulang MacPorts dan sshpass.

Bagaimana saya bisa dapatkan ssh-askpass ? Bagaimana saya bisa mengkonfigurasi / dev / tty ?

Salam!

TheFox
sumber
"Konfigurasikan /dev/tty ”Berarti menjalankan skrip dari terminal. Untuk mendapatkan prompt GUI, Anda perlu ssh-askpass (dan saya tidak tahu mengapa Anda tidak lagi memilikinya).
Gilles
Saya tidak perlu ssh-askpass, tetapi sshpass membutuhkannya untuk ... tidak ada. 0.o Saya menjalankan semua skrip saya dari terminal. Saya tidak punya gui untuk naskahnya.
TheFox
Aku mengalami masalah yang sama. Saya menggunakan aplikasi di Snow Leopard yang menggunakan sshpass, dan berfungsi dengan baik. Di Lion tidak. Saya mendapatkan pesan berikut: ssh_askpass: exec (/ usr / libexec / ssh-askpass): Tidak ada file atau direktori seperti itu Yang lucu adalah bahwa / usr / libexec / ssh-askpass juga tidak ada di Snow Leopard. Saya telah melihat di situs lain bahwa "Tidak ada file atau direktori" adalah pesan yang menyesatkan. Ada ide?

Jawaban:

2

Pertama-tama Anda harus mengajukan keluhan dengan administrasi server, mengamati bahwa otentikasi kunci publik jauh lebih aman daripada sekadar kata sandi, tetapi saya akan menganggap Anda sudah melakukannya, dan admin Anda hanyalah orang bodoh.

Apple dengan sedih menghapus ssh-askpass ketika mereka mengintegrasikan fungsinya ke ssh, scp, dan ssh-add. Namun ada paket SSHKeychain yang menyediakan ssh-askpass dengan kata sandi Cocoa seperti Apple untuk paket openssh macports. Ini akan memperbaiki masalah Anda seperti yang Anda inginkan, bahkan mungkin mengatur variabel SSH_ASKPASS untuk Anda.

Hanya fyi, saya biasanya merekomendasikan untuk tidak menginstal paket macports openssh itu sendiri karena melanggar prompt kata sandi Apple Anda, tetapi begitu Anda menginstal SSHKeychain macports biasanya menawarkan openssh yang lebih baru daripada Apple.

Tidak ada yang salah dengan menanamkan kata sandi dalam skrip ketika server menonaktifkan otentikasi kunci publik, yaitu jika mereka peduli dengan keamanan, mereka harus mengaktifkan kembali kunci publik. Bahkan ada server yang sengaja memecah sshpass. Anda dapat mengakses mesin tersebut menggunakan skrip harapan berikut:

#!/usr/bin/expect -f
set timeout -1
set send_human {.05 0.1 1 .07 1.5}
eval spawn $argv
match_max 100000
expect {
   -re "USERNAME@(\[0-9A-Za-z_\\-\\.\]+)'s password: "
     { sleep 0.1 ; send -- "PASSWORD\r" ; sleep 0.3 }
}
interact

Anda dapat mempercepat skrip ini dengan mengurangi sleeps dan keterlambatan send_human.

Jeff Burdges
sumber
0

Saya juga mengalami masalah serupa setelah memutakhirkan ke Mac OS X Lion. Saya menggunakan Unison untuk menyinkronkan direktori di MacBook Pro saya dengan server Linux saya, tetapi setelah upgrade saya tidak bisa terhubung lagi. Masalahnya adalah bahwa / usr / libexec / ssh-askpass tidak ada di Lion. Untuk memperbaiki ini, Anda dapat pergi ke http://westergaard.eu/2011/07/printing-on-wi-from-mac-os-x-lion/?utm_source=rss&utm_medium=rss&utm_campaign=printing-on-wi-from-mac-os -x-singa . Di sana Anda dapat mengunduh file Printer-hack.zip. Ini berisi file ssh-askpass yang dapat Anda pindahkan ke / usr / libexec /.

dataB0b
sumber
Jadi saya menempatkan ssh-askpass dari file zip ke / usr / libexec /. Tapi sekarang muncul bentuk ssh-askpass sementara saya menggunakan opsi "-p": sshpass -p. Itu tidak masuk akal!
TheFox
0

Cara yang tepat untuk memperbaikinya adalah dengan menghapus semua barang sshpass yang Anda instal dan hanya mengandalkan apa yang sudah disiapkan Apple untuk Anda.

Secara default, ssh-agent sudah berjalan (sebenarnya siap untuk dijalankan setelah Anda menggunakannya, melalui launchd). Anda dapat memverifikasi ini dari terminal dengan env|grep SSH yang harus kembali dengan sesuatu seperti SSH_AUTH_SOCK=/tmp/launch-7D4wfP/Listeners. Jika tidak terlihat seperti itu, maka Anda masih mengganti default di salah satu skrip startup shell Anda.

Kemudian, simpan frasa sandi kunci SSH Anda di gantungan kunci bersama ssh-add -K. Setelah selesai, itu akan secara otomatis memuat kunci Anda ke ssh-agent Anda saat diperlukan.

EDIT: Ups, saya ketinggalan bit "no pubkey auth" dan apa yang ssh-pass lakukan. Oke, coba atur variabel lingkungan SSH_ASKPASS ke skrip yang mencetak kata sandi Anda. Itu akan membuat ssh menjalankan skrip itu alih-alih ssh_askpass.

Apa yang bisa terjadi adalah bahwa Lion mungkin lebih ketat tentang TTY dan tidak akan menerima lingkungan yang disediakan oleh ssh-pass sebagai TTY nyata. Jika itu masalahnya maka ssh-pass perlu diperbaiki. Mungkin mengkompilasi ssh Anda sendiri mungkin berhasil juga.

w00t
sumber
1
Semua yang Anda tulis tidak ada hubungannya dengan masalah ini. Oke, sekali lagi. saya tidak bisa gunakan metode kunci publik / pribadi. Itu tidak bisa di masa lalu dan tidak akan bisa di masa depan. Saya hanya punya satu metode ini untuk terhubung secara otomatis ke server. Saya harus terhubung setiap hari ke selusin server dengan ssh dan menyalin kata sandi secara manual sangat mengganggu. Tidak mungkin Apple menghapus skrip!
TheFox
0

OK, saya juga menghadapi masalah yang sama dengan AIX ini. Skenario itu tidak menentu, kadang-kadang perintah akan mengeksekusi dan kadang-kadang akan melempar /dev/tty kesalahan.

Saya mengatasinya dengan melakukan hal berikut: Saya ekspor SSH_ASKPASS ke skrip shell yang akan mengulang kata sandi. dan kemudian jalankan ./sshpass -p $password $user@$node hostname. Pada melakukan ini, kasus-kasus yang ssh mengeluh /dev/tty itu menumbuhkan $SSH_ASKPASS dan mendapatkan kata sandi.

Semoga ini bermanfaat. Saya tergoda untuk berpikir bahwa ini lebih merupakan bug sshpass, tetapi tentu saja tidak lebih.

Tepuk tangan Suriyan

Suriyan Ramasami
sumber
OK, saya menemukan bahwa saya mengenai masalah ini dengan sshpass versi 1.05. Jika saya menggunakan sshpass versi 1.04 saya tidak melihat masalah ini. Jadi, ada hubungannya dengan versi ssh juga. AIX menggunakan versi ssh yang lebih lama. Saya sarankan Anda mencoba versi 1.04 dan 1.05 sshpass.
Suriyan Ramasami