Saya mencoba menulis skrip shell yang dapat melakukan login otomatis ke server ssh menggunakan kata sandi yang disebutkan dalam skrip. Saya telah menulis kode berikut:
set timeout 30
/usr/bin/ssh -p 8484 [email protected]
expect
{
"[email protected]'s password"
{
send "password\r"
}
}
Kode ini tidak berjalan dengan benar, masih meminta kata sandi. Adakah yang bisa membantu saya menyelesaikan ini?
Jawaban:
Saya pernah menulis
expect
skrip untuk masuk ke server ssh (seperti kasing Anda) dan skrip saya kira-kira seperti ini:Saya pikir mungkin
interact
ada yang hilang dalam skrip Anda.sumber
cd
danls
dan baca isi file juga. Apakah mungkin dilakukan setelah berinteraksi? Tolong balasls
perintah setelah login. Misalnya setelah mengirim kata sandi, lakukanexpect
dengan teks prompt perintah (untuk memastikan Anda masuk), lalusend "ls\r"
. Semua ini terjadi sebelumnyainteract
.file_list
setelah keluar untuk mengakses dari command prompt lokalAnda melakukannya dengan cara yang salah. Apa yang ingin Anda lakukan adalah menghasilkan pasangan ssh-key tanpa kata sandi dan kemudian (selama server mendukung otentikasi kunci RSA) Anda dapat masuk tanpa harus mengetikkan kata sandi untuk semua. Ini adalah risiko keamanan jika kunci pribadi Anda disimpan di suatu tempat yang bisa dicuri.
Ikuti langkah ini:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
Sekarang akan ada dua file di
~/.ssh
direktori Anda ,mysshkey.pub
danmysshkey
.mysshkey.pub
adalah kunci publik Anda, ini aman untuk diletakkan di server jarak jauh.mysshkey
adalah kunci tanpa kata sandi pribadi Anda, tidak aman untuk diletakkan di server jarak jauh (atau di tempat orang lain bisa mendapatkan salinannya).Di server Anda ingin SSH ke:
mkdir -p ~/.ssh
mysshkey.pub
ke~/.ssh/authorized_keys
~/.ssh/authorized_keys
yaituchmod
'd ke600
Sekarang, untuk menjalankannya di mesin lokal Anda, Anda menjalankan perintah berikut:
Dan Anda akan masuk tanpa diminta kata sandi.
Ini adalah metode yang jauh lebih disukai untuk mengelola login otomatis karena Anda tidak akan mengkodekan kata sandi Anda di banyak tempat yang perlu diperbarui jika Anda pernah mengubahnya.
sumber
Pada distribusi berbasis Debian,
sshpass
paket menyediakan cara yang lebih mudah untuk melakukan apa yang Anda inginkan. Paket ini tersedia untuk banyak distribusi populer lainnya. Anda harus mengaturnya terlebih dahulu:Kemudian aktifkan perintah SSH dari skrip seperti ini:
Ini memberikan lebih banyak fleksibilitas, seperti jika Anda menggunakan lokal yang berbeda atau perlu mengubah kata sandi, daripada menggunakan solusi
expect
.sumber
Pertama instal sshPass
sudo apt-get install sshpass
Kemudian buat alias di file .bashrc sebagai
Sekarang muat ulang file .bashrc Anda yang telah diubah
source ~/.bashrc
Anda sudah selesai.
Sekarang Anda dapat menjalankan ssh menggunakan alias yang dibuat di atas
sshLogin
di terminal.sumber
Anda bisa menggunakan ini:
sumber
Semua yang Anda butuhkan untuk membuat kunci hash dan menyimpannya di PC Anda
Ketik saja
lalu masuk
lalu login secara normal menggunakan
Sekarang Anda tidak perlu kata sandi
sumber
ssh-copy-id
, yang tidak disebutkan orang lain. Saya memilih untuk itu.SSH Passwordless Login Menggunakan SSH Keygen dalam 5 Langkah Mudah :
Pengaturan lingkungan:
Langkah 1: Otentikasi SSH-Kegen Keys on - (192.168.0.12)
Login pertama ke server 192.168.0.12 dengan pengguna dan hasilkan sepasang kunci publik menggunakan perintah berikut.
Langkah 2: Buat direktori .ssh di - 192.168.0.11
Gunakan SSH dari server 192.168.0.12 untuk menghubungkan server 192.168.0.11 untuk membuat direktori .ssh di bawahnya, menggunakan perintah berikut.
Langkah 3: Unggah Generalized Public Keys ke - 192.168.0.11
Gunakan SSH dari server 192.168.0.12 dan unggah kunci publik baru yang dihasilkan (id_rsa.pub) di server 192.168.0.11 di bawah
.ssh
direktori pengguna sebagai nama file yang diotorisasi.Langkah 4: Aktifkan Izin pada - 192.168.0.11
Karena versi SSH yang berbeda pada server, kita perlu mengatur izin pada
.ssh
direktori danauthorized_keys
file.Langkah 5: Masuk dari 192.168.0.12 ke 192.168.0.11 Server tanpa kata sandi
Mulai sekarang dan seterusnya kita dapat masuk ke 192.168.0.11 sebagai pengguna sheena dari server 192.168.0.12 sebagai pengguna tecmint tanpa kata sandi.
sumber
chmod 700 id_rsa
di direktori .ssh di server (klien, yaitu 192.168.0.12 dalam contoh Anda): menyelesaikan masalahSeperti yang sudah dijelaskan dalam jawaban lain, saya juga menggunakan
sshpass
tetapi saya menggabungkannya denganread
perintah untuk menyimpan kata sandi saya dalam variabel lingkungan sementara. Dengan cara ini kata sandi saya tidak pernah ditulis dengan jelas. Ini adalah perintah satu baris yang saya gunakan:Setelah itu Anda harus memasukkan kata sandi Anda (tidak ada yang muncul di layar) dan kemudian menekan enter akan membuka koneksi.
sumber
Saya baru-baru ini melakukan ini, ini dapat membantu Anda:
jika ini tidak berhasil maka Anda harus membuat kunci di mesin lain yang ingin Anda sambungkan
itu akan menghasilkan kunci pribadi dan publik dan meminta Anda untuk lokasi, biarkan kosong itu akan menyimpan kunci dalam folder .ssh secara default akan meminta Anda untuk passphrase, Anda juga dapat membiarkannya kosong masuk folder .ssh dan mengubah nama kunci publik ke 'otor_keys'
ini akan menambah pengguna ke daftar sekarang pergi ke direktori home dan berikan izin dan restart layanan sshd
sekarang Anda harus memindahkan kunci pribadi ke sistem di lokasi itu dari tempat Anda menjalankan perintah ssh, maka Anda dapat terhubung dengan
jika bahkan itu tidak berhasil maka masuk / etc / ssh buka sshd_config dengan editor vim periksa apakah pubkeyAuthenticatoin berubah menjadi ya atau tidak, jika tidak mengubahnya ke ya, restart layanan sshd dan kemudian coba, pasti akan bekerja .
sumber
Argumen pertama adalah nama host dan yang kedua adalah kata sandi.
Eksekusi: ./script.expect
sumber