Saya perlu membuat cadangan berkala direktori pada server jauh yang merupakan mesin virtual yang diselenggarakan oleh organisasi riset. Mereka mengamanatkan bahwa akses ke VM adalah melalui kunci ssh, yang semuanya baik, kecuali bahwa saya tidak tahu bagaimana mengarahkan rsync ke kunci ssh untuk server ini.
Rsync tidak memiliki masalah jika file kuncinya ~/.ssh/id_rsa
, tetapi ketika itu adalah sesuatu yang lain saya dapatkan Permission denied (publickey)
.
Dengan ssh saya dapat menentukan file identitas -i
, tetapi rsync tampaknya tidak memiliki opsi seperti itu.
Saya juga telah mencoba untuk sementara waktu memindahkan kunci pada mesin lokal ~/.ssh/id_rsa
, tetapi hal yang sama tidak berhasil.
tl; dr
Bisakah Anda menentukan file identitas dengan rsync?
sudo rsync
, yang tidak menggunakan kunci ssh sendiri, karena alasan tertentu.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
saat menyinkronkan dari skrip cron yang dijalankan sebagai rootJawaban:
Anda dapat menentukan perintah ssh persis melalui opsi '-e':
Banyak pengguna ssh yang tidak terbiasa dengan file ~ / .ssh / config mereka. Anda dapat menentukan pengaturan default per host melalui file konfigurasi.
Dalam jangka panjang yang terbaik adalah mempelajari file ~ / .ssh / config.
sumber
~/.ssh/config
berkas - Anda telah membuka alam semesta baru bagi saya!Ini dapat dilakukan dengan konfigurasi pengguna SSH lihat: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ pada dasarnya edit ~ / .ssh / config:
Ini harus bekerja untuk semua program yang menggunakan SSH, rsync,
sumber
Bagi saya itu sudah cukup untuk memulai ssh-agent sebagai berikut:
Lihat juga jawaban yang lebih panjang di sini https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
sumber
FYI:
1) Kunci publik selalu ada di direktori home dari pengguna yang masuk ke server jauh yaitu jika Anda login sebagai "cadangan" itu terletak di /home/backup/.ssh/authorized_keys. ID pengguna saat Anda login mendefinisikan kunci publik yang digunakan di tujuan.
Anda dapat memilih ID pengguna saat membuat koneksi dengan dua cara berbeda:
Di sisi lain di ujung Anda, kunci pribadi dalam cara yang sama di homedir pengguna kecuali Anda menimpanya seperti dijelaskan dalam jawaban Dan.
2) Untuk tujuan pencadangan, mungkin diinginkan untuk membuat kunci terbatas yang dibatasi untuk menjalankan hanya satu perintah seperti "rsync". Ada deskripsi yang baik tentang itu terkait dengan cadangan "rsnapshot" yang memungkinkan Anda untuk membuat cadangan seluruh server menggunakan akun pengguna yang tidak memiliki hak istimewa dan "sudo":
"rsnapshot" howto
Rsnapshot dapat dengan mudah mencadangkan sekelompok server jauh atau lokal membuatnya menjadi server cadangan terjadwal & terpusat.
sumber