Saya ingin mengatur pekerjaan RSync yang akan terhubung melalui SSH.
Saya memiliki komputer saya (backup @ myhost) dan host jarak jauh (test @ remhost) dan saya perlu membuat cadangan folder ~ / sesuatu dengan semua isinya. Tes pengguna ssh hanya memiliki akses BACA ke semua file dan folder di folder ~ /. Saya ingin menggunakan rsync untuk menyalin test @ remhost: ~ / folder sesuatu ke cadangan @ myhost: ~ / folder bak.
Untuk tujuan ini saya menggunakan perintah berikut melalui BASH di Ubuntu 11.10 (Oneiric):
rsync -avz -e ssh test@remhost:~/something/ ~/bak/
Setelah menekan enter saya mendapatkan ini:
test@remhost's password:
Saya mengetik kata sandi dan rsync berfungsi.
Saya ingin membuat perintah di atas untuk secara otomatis memasukkan kata sandi dan meneruskannya sebagai parameter atau untuk memasukkannya secara otomatis dan memulai pekerjaan.
Saya mencoba menjalankan rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/
tetapi masih meminta kata sandi dan itu menjengkelkan.
Saya tidak ingin mendengar tentang kunci apa pun (RSA, DSA, atau lainnya). Saya hanya ingin perintah sederhana yang akan masuk saya dan melakukan pekerjaan.
EDIT: Skenario yang mungkin terjadi, jika otentikasi kunci publik dinonaktifkan dan Anda tidak dapat mengubahnya. Misalnya, jika Anda menggunakan OpenSSH, Anda akan memerlukan hak akses root di server untuk mengedit file sshd_config
dan menambahkan PubkeyAuthentication yes
.
EDIT: Inilah yang akhirnya berhasil untuk saya:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Harap dicatat bahwa metode ini tidak dianggap aman karena mengirim kata sandi dalam teks biasa dan rentan terhadap serangan manusia-di-tengah. Disarankan untuk menggunakan penghentian kunci untuk keamanan yang lebih kuat.
Jawaban:
mungkin coba sshpass .
tampaknya cukup sederhana untuk digunakan ... ini tersedia melalui apt juga.
Saya mencari sesuatu seperti ini sebelum saya menyalin kunci saya, tetapi karena saya punya kunci saya di mana-mana saya sudah perlu, saya belum mengambil waktu untuk mencoba ini.
Perhatikan disclaimer pada tutorial itu tentang visibilitas kata sandi Anda.
Untuk semua orang yang perlu melakukan ini:
sumber
Variasi pada solusi Anda yang lebih aman terhadap ancaman keamanan adalah menyimpan kata sandi Anda dalam file dengan izin ketat dan menggunakan
-f
tanda denganshpass
:Perbedaannya adalah bahwa mendaftarkan proses yang sedang berjalan tidak akan menampilkan kata sandi Anda di baris perintah, itu sekarang hanya akan menunjukkan jalur ke file di mana kata sandi Anda.
sumber
Saya tidak bisa membayangkan situasi di mana otentikasi kunci publik tanpa frasa sandi tidak akan menjadi solusi yang lebih baik untuk login ssh / rsync yang diotomatisasi.
Pokoknya
expect
harus menjadi cara untuk mencapai apa yang ingin Anda lakukan. Anda tidak dapat mem-pipe password ke ssh, tetapi ini adalah sesuatu yang sangat mirip. Cara melakukannya, dijawab di sini di stackoverflow .sumber
Saya menemukan bahwa sshpass berfungsi, tetapi karena termanal mengatakan
SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
Anda perlu menjalankannya seperti ini:Di mana
-P
menentukan prompt mana yang harus dicari, saya menemukan itu dengan menjalankansshpass -v
dan mencari tahu mencari frasapassword
yang tidak ada.sumber
hal pertama adalah melakukan ssh tanpa
passowrd/bypass
login kata sandi, seperti yang Anda lihat dapat kita gunakanssh-copy-id -i ./ssh/id_rsa.pub
untuk mesin target.Setelah pengujian itu mesin dapat secara jarak jauh dengan ssh tanpa kata sandi, kemudian rsync dalam perjalanan selanjutnya tentu saja dari mesin lokal ke
target/server
mesinsumber