Tôi thường xuyên sao lưu vào một ổ đĩa cục bộ mà tôi muốn đồng bộ hóa hàng ngày với một máy chủ từ xa.
Máy chủ đích được cấu hình chỉ để truy cập khóa SSH (không có mật khẩu). Vì khóa SSH chính của tôi cho máy chủ đó được bảo vệ bằng cụm mật khẩu, tôi đã tạo khóa SSH thứ hai (không được bảo vệ cụm mật khẩu) + để sử dụng cho các bản sao lưu không giám sát - theo cách này tôi không phải có mặt để nhập cụm mật khẩu của mình khi cron chạy .
Tôi đang sử dụng cron và rsync, và tất cả các lệnh hoạt động riêng lẻ, nhưng không thành công khi kết hợp.
Lần xa nhất tôi có trong khi xử lý sự cố đang chạy
env -i sh -c "rsync -lrstRO --delete --exclude 'lost+found' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/"
trả về lỗi
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]
Bất kỳ lời khuyên về cách khắc phục sự cố này hơn nữa?
Đây là những gì tôi đã thử cho đến nay và tôi không có ý tưởng:
- Cron chắc chắn đang chạy
ps aux | grep cron
Không có gì bất thường trong / var / log / syslog
Sep 7 13:22:01 desktop CRON[6735]: (tom) CMD (sh /home/tom/Documents/Scripts/offsite-backup)
SSH trong Terminal đến máy chủ từ xa khi người dùng sao lưu hoạt động
ssh backups-user@XX.XX.XX.XX
- Chạy lệnh trong Terminal hoạt động hoàn hảo
rsync -lrstRO --delete --exclude 'lost+found' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/
Chỉ định thủ công đường dẫn đến khóa người dùng sao lưu không có hiệu lực
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/
Thay thế lệnh không hoạt động bằng lệnh kiểm tra đơn giản hoạt động
echo "Hello world" > ~/Desktop/test.txt
Hét lên / chửi rủa máy tính không có tác dụng (nhưng tạm thời khiến tôi cảm thấy tốt hơn).
Chỉnh sửa 1:
Đây là tập tin crontab của tôi và tập lệnh mà nó gọi.
...
# m h dom mon dow command
MAILTO=""
* * * * * sh /home/tom/Documents/Scripts/offsite-backup
và
#!/bin/bash
rsync -lrstRO --delete --exclude 'lost+found' /Backups/auto-daily-backups/./ backups-only@XX.XX.XX.XX:/backups/desktop/
Chỉnh sửa 2:
Nói rõ hơn, /var/log/auth.log
trên máy chủ đích chứa dòng Sep 11 08:23:01 <hostname> CRON[24421]: pam_unix(cron:session): session closed for user root
Điều này thật khó hiểu vì tôi không còn chạy cron mỗi phút cục bộ, nhưng một mục mới vẫn xuất hiện mỗi phút trong nhật ký máy chủ. Các tệp Crontab cho tất cả người dùng (bao gồm cả root) trên máy chủ đều trống và không làm gì cả.
Ngoài ra, người dùng 'chỉ sao lưu' chỉ được tạo trên máy chủ và với các quyền hạn chế, với khóa SSH chuyên dụng được sao chép vào máy tính để bàn của tôi. Tôi cho rằng đây là cách để đi vì mọi thứ đều hoạt động khi chạy các lệnh theo cách thủ công.
Tệp crontab được đăng ở trên là dành cho tôi, người dùng 'tom' trên máy tính để bàn của tôi. Mục đích của tôi là để nó gọi tập lệnh sẽ đăng nhập vào máy chủ dưới dạng 'chỉ sao lưu' của người dùng. Tôi vừa thử chạy tập lệnh sao lưu (chứ không phải lệnh bên trong nó) và nó đã kết nối và làm việc thành công. Tôi đã chạy nó trên máy tính để bàn của mình với tư cách là người dùng 'tom', cùng một người dùng đã tạo ra công việc định kỳ không hoạt động. Đây là đầu ra từ nhật ký máy chủ tương ứng với thông tin đăng nhập thành công đó
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]...
. Bạn có chắc chắn 100% rằng logline này là từ máy chủ và đó là dòng chính xác? Các crontab bạn đã đăng là crontab chỉ sao lưu ? Ngoài ra, hãy thử thêm tệp nhận dạng theo cách thủ công:rsync .... -e 'ssh -i /home/user/.ssh/identity' ...
auth.log
bạn được đăng trong Chỉnh sửa 2 là dành cho cron chạy trên máy chủ và không liên quan gì đến những lần thử đăng nhập của bạn. Bạn có thể thử tail -f /var/log/auth.log
trên máy chủ trong khi bạn đang cố gắng chạy tập lệnh thông qua cron không? Ngoài ra, tôi không chắc liệu nó có hoạt động không, nhưng bạn có thể thử env
lệnh đầu tiên của mình rsync .... -e 'ssh -vvv -i /home/user/.ssh/identity ...
để xem liệu nó có phát sinh thêm lỗi không?