Làm cách nào tôi có thể thiết lập rsync giữa hai máy chủ mà không cung cấp bất kỳ mật khẩu nào?
Làm cách nào tôi có thể thiết lập rsync giữa hai máy chủ mà không cung cấp bất kỳ mật khẩu nào?
Câu trả lời:
Dưới đây là bài viết từ The Geek Stuff :
1. Kiểm tra rsync qua ssh (bằng mật khẩu):
Thực hiện rsync để đảm bảo nó yêu cầu mật khẩu cho tài khoản của bạn trên máy chủ từ xa và sao chép thành công các tệp vào máy chủ từ xa.
Ví dụ sau sẽ đồng bộ hóa thư mục cục bộ
/home/test
sang thư mục từ xa/backup/test
(trên192.168.200.10
máy chủ).Điều này sẽ yêu cầu bạn nhập mật khẩu của tài khoản của bạn trên máy chủ từ xa.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen tạo khóa.
Bây giờ hãy thiết lập
ssh
để nó không yêu cầu mật khẩu khi bạn thực hiện ssh. Sử dụngssh-keygen
trên máy chủ cục bộ để tạo khóa công khai và khóa riêng.$ ssh-keygen
Nhập cụm mật khẩu (trống không có cụm mật khẩu):
Nhập lại cụm mật khẩu một lần nữa: Lưu ý: Khi nó yêu cầu bạn nhập cụm mật khẩu, chỉ cần nhấn phím enter và không cung cấp bất kỳ mật khẩu nào ở đây.
3. ssh-copy-id sao chép khóa chung vào máy chủ từ xa
Sử dụng
ssh-copy-id
, để sao chép khóa chung vào máy chủ từ xa.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Lưu ý: Ở trên sẽ hỏi mật khẩu cho tài khoản người dùng trên máy chủ từ xa và tự động sao chép khóa chung vào vị trí thích hợp. Nếu ssh-copy-id không hoạt động với bạn, hãy sử dụng phương pháp chúng tôi đã thảo luận trước đó để thiết lập mật khẩu ssh ít đăng nhập.
4. Thực hiện rsync trên ssh mà không cần mật khẩu
Bây giờ, bạn sẽ có thể ssh đến máy chủ từ xa mà không cần nhập mật khẩu.
ssh user@192.168.200.10
Thực hiện lại rsync, lần này không nên yêu cầu bạn nhập bất kỳ mật khẩu nào.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Genarate khóa công khai trong ServerA
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
Khóa công khai sẽ được tạo và lưu trữ trong
~/.ssh/id_rsa.pub
Sao chép khóa công khai vào máy chủ từ xa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
Hoặc là
~/.ssh/authorized_keys
. Tạo tập tin nếu không tồn tại. Đảm bảo chế độ tập tin là 700.Tất cả các đề xuất rsync này đều thất bại khi sử dụng phiên bản mới nhất vào tháng 8 năm 2017 trên Ubuntu 16.04 LTS. Không một ai trong số họ làm việc.
Tất cả họ cũng chia sẻ sự thiếu hụt của việc yêu cầu một daemon rsync chạy trên máy chủ tệp.
Câu trả lời này hoạt động với một NAS Linux chung
ĐÂY LÀ BƯỚC:
1) SỬ DỤNG rsync như hình bên dưới. (đến thư mục dưới / mnt hoặc / media bạn đã tạo hoặc trên thiết bị bạn gắn kết. Không thành vấn đề) 2) CHUYỂN GIAO tệp VỚI scp như hiển thị bên dưới. FileZilla cũng sẽ hoạt động.
Tất cả điều này (trừ FileZilla) có thể hoạt động trong cron mà không cần mật khẩu.
Thiết lập này hoạt động rất tốt. Lần duy nhất bạn cần mật khẩu là khi bạn thiết lập ssh-copy-id ban đầu để thiết lập thông tin đăng nhập mật khẩu RSA. Sau đó, bạn lập trình nó vào FileZilla một lần. Sau đó, ngày qua ngày, không có lời nhắc mật khẩu nào xảy ra. Đây là DỄ DÀNG. Và phần tốt nhất là bạn có thể sử dụng tất cả các lợi ích của chương trình rsync.
Câu trả lời này giải thích cách sử dụng rsync mà không cần mật khẩu.
Ngoài ra, không cần cài đặt thêm một daemon (rsync) nào trên cả hai hệ thống.
Nếu bạn chưa có, hãy làm điều này:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
và kiểm tra nó với điều này:
ssh NASserver
và có thể một cái gì đó như thế này:
scp myfile myusername@NASserver:Documents
Tôi có ổ cứng thứ hai vì vậy tôi sử dụng rsync để sao chép ổ đĩa khởi động vào thư mục con trên sdb1 (được gắn dưới / mnt và loại trừ khỏi rsync).
Nếu bạn không có ổ cứng vật lý và có đủ dung lượng trống, bạn chỉ cần tạo thư mục con trong / mnt (hoặc / media) và sử dụng nó.
Miễn là thư mục được loại trừ, nó không thành vấn đề nếu nó nằm trên một ổ đĩa riêng biệt hay không.
Đây là kịch bản sao lưu:
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
SAU rsync sử dụng tập lệnh:
Tôi luôn tạo một thư mục mới trên máy chủ NAS đích: / mnt / fullsys / mysystem để chỉ các tệp có liên quan được chuyển.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
Voila! Phải mất một lúc nhưng sau đó nó đã được thực hiện.
Cả hai tập lệnh có thể hoạt động tốt trong cron.
Cách khác là sử dụng FileZilla để gửi cho nó máy chủ NAS theo cách thủ công.
Vì có thể xóa tôi luôn
make a new directory and enter it
thông qua FileZilla trên ổ cứng 1TB đích nên chỉ các tệp có liên quan được chuyển.
Chỉ khi quá trình chuyển hoàn tất, tôi mới xóa phiên bản cũ hơn.
Voila. Sự thành công.
đánh dấu người dùng trong địa chỉ sẽ tốt hơn
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
sau đó tất cả excludes
và --delete
v.v. Tôi chưa làm cho nó hoạt động nhưng đây là lần gần nhất tôi đã thấy. Giả sử bạn phải làm điều này ngay cả khi bạn đã có thể ssh
và scp
đến máy chủ đích, và daemon rsync cần được chạy vì nó không sử dụng định dạng sftp bình thường. Tôi vẫn đang tìm kiếm.