Rsync trên ssh với quyền truy cập root ở cả hai bên


14

Tôi có một máy chủ Ubuntu cũ hơn và một máy chủ debian mới hơn và tôi đang di chuyển dữ liệu từ máy chủ cũ sang máy chủ mới. Tôi muốn sử dụng rsync để truyền dữ liệu qua để giúp việc di chuyển cuối cùng dễ dàng và nhanh chóng hơn quá trình tar / scp / unsar tương đương.

Ví dụ, tôi muốn đồng bộ hóa từng thư mục nhà với máy chủ mới. Điều này yêu cầu quyền truy cập root ở cả hai đầu vì không phải tất cả các tệp ở phía nguồn đều có thể đọc được và đích phải được ghi với quyền chính xác vào / home. Tôi không thể tìm ra cách cung cấp quyền truy cập root rsync ở cả hai bên.

Tôi đã thấy một vài câu hỏi liên quan, nhưng không có câu hỏi nào phù hợp với những gì tôi đang cố gắng làm.

Tôi đã thiết lập và làm việc trên cả hai máy chủ.

Câu trả lời:


14

Trên thực tế, bạn KHÔNG cần phải cho phép root atropication thông qua SSH để chạy rsync như Antoine gợi ý. Việc xác thực vận chuyển và hệ thống có thể được thực hiện hoàn toàn trên tài khoản người dùng miễn là bạn có thể chạy rsync với sudo ở cả hai đầu để đọc và ghi tệp.

Là người dùng trên máy chủ đích của bạn, bạn có thể hút dữ liệu từ máy chủ nguồn của mình như thế này:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

Người dùng bạn chạy như trên cả hai máy chủ sẽ cần quyền truy cập mật khẩu * sudo vào nhị phân rsync, nhưng bạn KHÔNG cần phải bật đăng nhập ssh dưới quyền root ở bất cứ đâu. Nếu người dùng bạn đang sử dụng không khớp ở đầu bên kia, bạn có thể thêm người dùng @ boron: để chỉ định người dùng từ xa khác.

Chúc may mắn.

* hoặc bạn sẽ cần phải nhập mật khẩu thủ công trong cửa sổ thời gian chờ.


5
Mặc dù đây là một câu hỏi cũ tôi muốn thêm từ THẬN TRỌNG vào câu trả lời được chấp nhận này. Theo hiểu biết của tôi, cho phép "sudo rsync" không mật khẩu tương đương với việc mở tài khoản root để đăng nhập từ xa. Điều này là do với điều này rất dễ dàng để có được quyền truy cập root đầy đủ, ví dụ vì tất cả các tệp hệ thống có thể được tải xuống, sửa đổi và thay thế mà không cần mật khẩu.
Lễ Phục sinh

3

Nếu dữ liệu của bạn không nhạy cảm cao, bạn có thể sử dụng tarsocat. Theo kinh nghiệm của tôi, điều này thường nhanh hơn so rsyncvới ssh.

Bạn cần socathoặc netcatở cả hai bên.

Trên máy chủ đích, đi đến thư mục mà bạn muốn đặt dữ liệu của mình, sau lần chạy đó:
socat TCP-LISTEN:4444 - | tar xzf -

Nếu máy chủ đích đang lắng nghe, hãy khởi động nó trên nguồn như:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Đối với thiết lập này, bạn sẽ cần một kết nối đáng tin cậy giữa 2 máy chủ.


Điểm tốt. Trong một môi trường đáng tin cậy, bạn sẽ nhận được rất nhiều tốc độ bằng cách không mã hóa. Nó có thể không quan trọng trên các tệp nhỏ, nhưng với GB dữ liệu thì nó sẽ như vậy.
pboin

2

Ok, tôi đã cùng nhau tìm ra tất cả các manh mối để có được thứ gì đó phù hợp với mình.

Hãy gọi các máy chủ là "src" & "dst".

Thiết lập một cặp khóa cho root trên máy chủ đích và sao chép khóa chung vào máy chủ nguồn:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

Thêm khóa chung vào khóa ủy quyền của root trên máy chủ nguồn

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

Quay lại máy chủ đích, kéo dữ liệu qua bằng rsync:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/
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.