Paswordless Rsync Over SSH Tanpa Otentikasi Kunci [Tidak Aman]

12

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_configdan 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.

Sorin-Mihai Oprea
sumber
3
Anda tidak akan mendapat jawaban jika Anda memberi tahu orang lain untuk tidak memberi tahu Anda jawabannya.
Mike Scott
7
Ini tidak ada gunanya. Apa masalah dengan otentikasi kunci? Jika otentikasi berbasis kunci telah dikonfigurasi, maka sejak saat itu Anda hanya memiliki perintah sederhana yang melakukan pekerjaan, secara otomatis, persis seperti yang Anda inginkan. Jadi saya tidak bisa melihat apa masalahnya dengan ini. Menyimpan kata sandi di suatu tempat untuk menentukannya "secara otomatis" adalah salah satu lubang keamanan terbesar yang bisa saya bayangkan, apa gunanya melakukannya?
LGB
Saya tidak membutuhkan siapa pun untuk memberi saya kuliah tentang keamanan. Saya sudah tahu implikasinya. Saya hanya harus meninggalkan semua yang ada di server dan tidak mengubah apa pun. Untuk Informasi Anda, saya sudah mencobanya dengan kunci dan masih meminta saya untuk kata sandi sehingga argumen Anda tidak valid!
Sorin-Mihai Oprea
1
Tidak, untuk alasan yang baik tidak ada parameter seperti itu secara default. Lihatlah jawaban Migs jika Anda menginginkan parameter seperti itu.
lumbric
2
@ Korin Mihai Oprea: Ya, jika itu tidak berhasil untuk Anda, itu buruk? Menarik. Untuk informasi Anda: sebagai insinyur sistem internet yang bekerja di ISP, kami menggunakan otentikasi berbasis kunci dengan ssh di lebih dari 100 server. Ini bekerja untuk kita, menarik. Jangan menyebut sesuatu yang buruk hanya karena Anda tidak mengerti cara kerjanya dan bagaimana itu harus dikonfigurasi. Jika Anda benar, itu tidak akan bekerja untuk siapa pun yang akan menarik perhatian sebagai bug implementasi server ssh utama :) Jadi agrument saya tidak valid, hanya saja Anda tidak dapat mengonfigurasinya dengan baik untuk beberapa alasan. Tidak sama, maaf.
LGB

Jawaban:

29

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:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
sumber
Sama-sama. Sementara saya setuju dengan orang-orang lain di sini bahwa otentikasi kunci-publik adalah solusi terbaik untuk masalah ini, kadang-kadang diperlukan metode alternatif, asalkan kita mengetahui pertukarannya ketika menggunakan alternatif.
Migs
Memang ... tapi itu sebabnya ini disebut open source kan? Berbagai rasa ... hasil yang sama!
Sorin-Mihai Oprea
1
TERIMA KASIH karena tidak hanya mengatakan kata sandi yang buruk, jangan menggunakannya, beberapa dari kita pada peralatan lama OLDDDD hanya memerlukan ini untuk bertahan sampai peralatan baru tiba :)
Theodore Howell
6

Variasi pada solusi Anda yang lebih aman terhadap ancaman keamanan adalah menyimpan kata sandi Anda dalam file dengan izin ketat dan menggunakan -ftanda dengan shpass:

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

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.

Andrew Allaire
sumber
Jawaban ini lebih baik daripada jawaban yang diterima.
vietnguyen09
1

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 expectharus 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 .

lumbric
sumber
Terima kasih atas sarannya tetapi saya sebenarnya menemukan sshpass jauh lebih sederhana!
Sorin-Mihai Oprea
1

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:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

Di mana -Pmenentukan prompt mana yang harus dicari, saya menemukan itu dengan menjalankan sshpass -vdan mencari tahu mencari frasa passwordyang tidak ada.

GuySoft
sumber
0

hal pertama adalah melakukan ssh tanpa passowrd/bypasslogin kata sandi, seperti yang Anda lihat dapat kita gunakan ssh-copy-id -i ./ssh/id_rsa.pubuntuk 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/servermesin

budi satriyo
sumber