Làm cách nào để thiết lập Rsync mà không cần mật khẩu với SSH trên UNIX / Linux?


19

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?

linux  ssh  rsync 

Điều đó sẽ rất hữu ích: blog.oracle.com/jkini/entry/how_to_scp_scp_and
Tom

Maverick143 đã cung cấp câu trả lời, nhưng câu hỏi này không thực sự thuộc về StackOverflow vì nó ít liên quan đến lập trình. SuperUser.com sẽ có liên quan hơn.
Martin

Câu trả lời:


30

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ên 192.168.200.10má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ụng ssh-keygentrê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/

Điều này cũng giúp tốt hơn. troy.jdmz.net/rsync/index.html
MangeshBiradar

5
Xóa bản sao và dán từ thegeek ware.com/2011/07/rsync-over-ssh-without-password bạn nên tham khảo tác giả gốc.
Lawrence Cherone

Nếu bạn cần sử dụng một người dùng khác, bạn có thể làm như vậy khi bạn thực hiện ssh-copy-id: ssh-copy-id -i ~ / .ssh / id_rsa.pub user@192.168.200.10
Finni McFinger

1

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à

  • Mở id_rsa.pub, sao chép nội dung
  • Đăng nhập vào ServerB bằng cùng một người dùng trong lệnh rsync
  • Trong ServerB, nối các nội dung vào ~/.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.

0

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 itthô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.


-1

đá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

2
Trong khi điều này có thể trả lời câu hỏi, nó sẽ là một câu trả lời tốt hơn nếu bạn có thể cung cấp một số lời giải thích tại sao nó làm như vậy.
DavidPostill

Cũng là cú pháp. Tôi tin rằng nó được sử dụng như một sự thay thế lệnh như thế này: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)sau đó tất cả excludes--deletev.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ể sshscpđế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.
SDsolar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.