Saya perlu membuat skrip yang secara otomatis memasukkan kata sandi ke ssh
klien OpenSSH .
Katakanlah saya perlu SSH myname@somehost
menggunakan kata sandi a1234b
.
Saya sudah mencoba ...
#~/bin/myssh.sh
ssh myname@somehost
a1234b
... tapi ini tidak berhasil.
Bagaimana saya bisa mendapatkan fungsi ini menjadi skrip?
ps -aux
, Anda seharusnya tidak menjalankan perintah dengan mengetik kata sandi Anda karena pengguna lain di komputer yang sama mungkin dapat melihat kata sandi dengan menjalankannyaps -aux
. jika praktis, Anda juga ingin menggunakan otentikasi kunci publik, seperti yang disebutkan dalam jawaban lain. ini memungkinkan Anda untuk memisahkan informasi otentikasi dari skrip Anda sehingga Anda dapat membagikan skrip Anda dengan orang lain tanpa khawatir, dan kemudian memutuskan untuk mengaktifkan enkripsi pada folder ~ / .ssh Anda tanpa juga mengenkripsi skrip Anda.sshpass
.Setelah mencari jawaban untuk pertanyaan itu selama berbulan-bulan, saya akhirnya menemukan solusi yang lebih baik: menulis naskah sederhana.
Masukkan
/usr/bin/exp
, lalu Anda dapat menggunakan:exp <password> ssh <anything>
exp <password> scp <anysrc> <anydst>
Selesai!
sumber
Gunakan otentikasi kunci publik: https://help.ubuntu.com/community/SSH/OpenSSH/Keys
Di host sumber jalankan ini hanya sekali:
Itu saja, setelah itu Anda akan dapat melakukan ssh tanpa kata sandi.
sumber
Anda dapat menggunakan skrip yang diharapkan. Saya belum menulis satu dalam beberapa waktu tetapi akan terlihat seperti di bawah ini. Anda harus memimpin skrip dengan
#!/usr/bin/expect
sumber
/bin/myssh.sh: 2: spawn: not found /bin/myssh.sh: 3: expect: not found /bin/myssh.sh: 4: send: not found /bin/myssh.sh: 5: expect: not found /bin/myssh.sh: 6: send: not found
which expect
#!/usr/bin/env expect
interact
sampai akhir sehingga sesi ssh benar-benar interaktifVarian I
Varian II
sumber
-p
bendera untuk menentukan nomor port.SYNOPSIS sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments
yum -y install epel-release
dan kemudianyum -y install sshpass
sshpass + autossh
Satu bonus bagus dari yang telah disebutkan
sshpass
adalah bahwa Anda dapat menggunakannya denganautossh
, menghilangkan lebih banyak lagi inefisiensi interaktif.Ini akan memungkinkan koneksi otomatis jika, misalnya wifi Anda terganggu dengan menutup laptop Anda.
sumber
-f
ke autossh dalam kombinasi ini, karenawhen used with autossh, ssh will be *unable* to ask for passwords or passphrases.
harding.motd.ca/autossh/README.txt juga superuser.com/questions/1278583/…sshpass
dengan keamanan yang lebih baikSaya tersandung di utas ini sambil mencari cara untuk ssh ke server macet - butuh waktu satu menit untuk memproses upaya koneksi SSH, dan kehabisan waktu sebelum saya bisa memasukkan kata sandi. Dalam hal ini, saya ingin dapat memberikan kata sandi saya segera ketika prompt tersedia.
(Dan jika tidak jelas jelas: dengan server di negara ini, sudah terlambat untuk membuat login kunci publik.)
sshpass
untuk menyelamatkan. Namun, ada cara yang lebih baik untuk melakukannyasshpass -p
.Implementasi saya melompat langsung ke prompt kata sandi interaktif (tidak ada waktu yang terbuang untuk melihat apakah pertukaran kunci publik dapat terjadi), dan tidak pernah mengungkapkan kata sandi sebagai teks biasa.
sumber
trap
untuk mencegah ctrl-C bocorSSHPASS
variabelPreferredAuthentications=keyboard-interactive
tidak berhasil, tetapi menggantinya denganPreferredAuthentications=password
bekerja.Ini adalah bagaimana saya masuk ke server saya.
#! / bin / bash
sshpass -p mypassword ssh root @ $ 1
Dan oleh karena itu...
sumber
referensi: https://www.linkedin.com/pulse/youre-doing-wrong-ssh-plain-text-credentials-robert-mccurdy?trk=mp-reader-card
sumber
Saya tidak berpikir saya melihat ada yang menyarankan ini dan OP hanya mengatakan "skrip" jadi ...
Saya perlu menyelesaikan masalah yang sama dan bahasa saya yang paling nyaman adalah Python.
Saya menggunakan perpustakaan paramiko. Selain itu, saya juga perlu mengeluarkan perintah yang saya perlukan izin meningkat menggunakan
sudo
. Ternyata sudo dapat menerima kata sandi melalui stdin melalui bendera "-S"! Lihat di bawah:Semoga ini bisa membantu seseorang. Kasus penggunaan saya adalah membuat direktori, mengirim dan menghapus file dan memulai program pada ~ 300 server sekaligus. Karena itu, otomatisasi adalah yang terpenting. Saya mencoba
sshpass
,,expect
dan kemudian datang dengan ini.sumber
Saya mendapatkan ini berfungsi sebagai berikut
.ssh / config telah dimodifikasi untuk menghilangkan prompt ya / tidak - saya berada di belakang firewall jadi saya tidak khawatir tentang kunci ssh palsu
Buat file tanggapan untuk harapan yaitu answer.expect
Buat skrip bash Anda dan panggil saja harapan dalam file
Dapatkan 128 hadoop datanodes yang disegarkan dengan konfigurasi baru - dengan asumsi Anda menggunakan NFS mount untuk file hadoop / conf
Semoga ini bisa membantu seseorang - Saya seorang Windows numpty dan ini membutuhkan waktu sekitar 5 jam untuk mencari tahu!
sumber
Jika Anda melakukan ini pada sistem Windows, Anda dapat menggunakan Plink (bagian dari Putty).
sumber
Saya punya solusi yang lebih baik yang memasukkan login dengan akun Anda daripada mengubah menjadi pengguna root. Ini adalah skrip bash
http://felipeferreira.net/index.php/2011/09/ssh-automatic-login/
sumber
Jawaban @abbotto tidak berfungsi untuk saya, harus melakukan beberapa hal secara berbeda:
sumber
Saya berhasil membuatnya bekerja dengan itu:
sumber
Dalam contoh di bawah ini saya akan menulis solusi yang saya gunakan:
Skenario: Saya ingin menyalin file dari server menggunakan skrip sh:
sumber
Gunakan skrip ini tossh di dalam skrip, Argumen pertama adalah nama host dan yang kedua adalah kata sandi.
sumber
Untuk menghubungkan mesin jarak jauh melalui skrip shell, gunakan perintah di bawah ini:
di mana
IPADDRESS
,USERNAME
danPASSWORD
merupakan nilai input yang perlu disediakan dalam skrip, atau jika kita ingin memberikan dalam runtime gunakan perintah "baca".sumber
StrictHostKeyChecking=no
tanpa menjelaskan konsekuensinya.tekan tombol enter dan kemudian masukkan kata sandi sistem Anda dan akhirnya masukkan kata sandi server Anda
sumber