Saya sering membuat cadangan ke drive lokal yang ingin saya sinkronkan setiap hari ke server jarak jauh.
Server target dikonfigurasikan hanya untuk akses kunci SSH (tanpa kata sandi). Karena kunci SSH utama saya untuk server itu dilindungi frasa sandi, saya telah membuat kunci SSH kedua (tidak dilindungi frasa sandi) + pengguna yang akan digunakan untuk cadangan tanpa pengawasan - dengan cara ini saya tidak harus hadir untuk memasukkan frasa sandi saya ketika cron berjalan .
Saya menggunakan cron dan rsync, dan semua perintah bekerja secara individual, tetapi gagal saat digabungkan.
Terjauh yang saya miliki saat pemecahan masalah sedang berjalan
env -i sh -c "rsync -lrstRO --delete --exclude 'lost+found' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/"
yang mengembalikan kesalahan
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]
Adakah tips tentang cara memecahkan masalah ini lebih lanjut?
Inilah yang saya coba sejauh ini dan saya kehabisan ide:
- Cron jelas berjalan
ps aux | grep cron
Tidak ada yang aneh di / var / log / syslog
Sep 7 13:22:01 desktop CRON[6735]: (tom) CMD (sh /home/tom/Documents/Scripts/offsite-backup)
SSH di Terminal ke server jauh saat pengguna cadangan bekerja
ssh backups-user@XX.XX.XX.XX
- Menjalankan perintah di Terminal berfungsi dengan baik
rsync -lrstRO --delete --exclude 'lost+found' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/
Menentukan jalur secara manual ke cadangan-pengguna tidak berpengaruh
rsync -lrstRO --delete --exclude 'lost+found' -e 'ssh -i /home/tom/.ssh/backups-only' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/
Mengganti perintah yang tidak berfungsi dengan perintah tes sederhana berfungsi
echo "Hello world" > ~/Desktop/test.txt
Berteriak / bersumpah pada komputer tidak berpengaruh (tapi membuatku merasa lebih baik sementara).
Edit 1:
Ini file crontab saya dan script yang dipanggilnya.
...
# m h dom mon dow command
MAILTO=""
* * * * * sh /home/tom/Documents/Scripts/offsite-backup
dan
#!/bin/bash
rsync -lrstRO --delete --exclude 'lost+found' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/
Edit 2:
Hanya untuk memperjelas, /var/log/auth.log
pada server target berisi baris Sep 11 08:23:01 <hostname> CRON[24421]: pam_unix(cron:session): session closed for user root
Ini membingungkan karena saya tidak lagi menjalankan cron setiap menit secara lokal, tetapi entri baru masih muncul setiap menit di log server. File crontab untuk semua pengguna (termasuk root) di server kosong & tidak melakukan apa-apa.
Juga, 'cadangan-saja' pengguna dibuat hanya di server dan dengan hak terbatas, dengan kunci SSH khusus yang disalin ke mesin desktop saya. Saya berasumsi ini adalah cara untuk pergi karena semuanya bekerja ketika menjalankan perintah secara manual.
File crontab yang diposting di atas adalah untuk saya, pengguna 'tom' di mesin desktop saya. Maksud saya adalah meminta skrip panggilan yang harus masuk ke server sebagai 'cadangan saja' pengguna. Saya baru saja mencoba menjalankan skrip cadangan (alih-alih perintah di dalamnya) dan berhasil tersambung & berfungsi. Saya menjalankannya di desktop saya sebagai pengguna 'tom', pengguna yang sama yang menciptakan pekerjaan cron yang tidak akan berfungsi. Inilah output dari log server yang sesuai dengan login yang berhasil
Sep 11 08:35:31 <hostname> sshd[25071]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Sep 11 08:35:32 <hostname> sshd[25071]: Accepted publickey for backups-only from <desktop IP> port 54242 ssh2: RSA e2:e6:07:27:c1:continues...
Sep 11 08:35:32 <hostname> sshd[25071]: pam_unix(sshd:session): session opened for user backups-only by (uid=0)
Sep 11 08:35:32 <hostname> systemd-logind[638]: New session 12 of user backups-only.
Sep 11 08:36:00 <hostname> sshd[25133]: Received disconnect from <desktop IP>: 11: disconnected by user
Sep 11 08:36:00 <hostname> sshd[25071]: pam_unix(sshd:session): session closed for user backups-only
Sep 7 14:45:01 <hostname> CRON[18716]: pam_unix(cron:session): session closed for user root
Sep 7 16:06:02 <hostname> sshd[6747]...
. Apakah Anda 100% positif bahwa logline ini dari server dan itu adalah baris yang benar? Crontab yang Anda poskan adalah crontab khusus cadangan ? Juga, cobalah untuk menambahkan file identitas secara manual:rsync .... -e 'ssh -i /home/user/.ssh/identity' ...
auth.log
Anda posting di bawah Edit 2 adalah untuk cron berjalan di server, dan seharusnya tidak ada hubungannya dengan upaya login Anda. Bisakah Anda mencoba tail -f /var/log/auth.log
di server saat Anda mencoba menjalankan skrip melalui cron? Juga, saya tidak yakin apakah ini akan berhasil, tetapi dapatkah Anda mencoba env
perintah pertama dengan Anda rsync .... -e 'ssh -vvv -i /home/user/.ssh/identity ...
untuk melihat apakah ia mengeluarkan lebih banyak kesalahan?