Không thể để rsync hoạt động ở chế độ daemon-over-ssh


11

Tôi đang cố gắng thiết lập rsync để sao chép dữ liệu từ máy chủ mỗi ngày. Để làm cho hệ thống bị hạn chế nhất có thể, tôi đang cố gắng sử dụng chế độ được mô tả trong trang nam như: "SỬ DỤNG CÁC TÍNH NĂNG RSYNC-DAEMON VIA MỘT KẾT NỐI XÓA BỎ"

Vì vậy, tôi đã đặt một tệp có tên rsyncd.conf vào thư mục gốc:

[root]
path = /
read only = true

và đã cố gắng sao chép / etc / passwd dưới dạng thử nghiệm:

rsync -vv -e ssh myserver::root/etc/passwd .

Nhưng tôi nhận được như sau:

opening connection using: ssh myserver rsync --server --daemon . 
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]

Lý do tôi làm tất cả điều này là vì một khi tôi làm cho nó hoạt động, tôi dự định hạn chế quyền truy cập bằng cách chỉ định lệnh

rsync --server --daemon .

trong ~ / .ssh / ủy quyền


Những gì được đăng nhập / var / log / safe hoặc / var / log / message trên máy chủ nhận?
Dave Cheney

Đó là: rsync: không thể mở tệp cấu hình "/etc/rsyncd.conf": Không có tệp hoặc thư mục như vậy (2) Cảm ơn, điều đó dẫn đến một giải pháp, mà tôi sẽ đăng dưới dạng câu trả lời.
rjmunro

Câu trả lời:


11

Dường như có một lỗi trong tài liệu hoặc việc cài đặt rsync. người đàn ông rsync nói:

Hỗ trợ rsync kết nối đến một máy chủ bằng cách sử dụng remote shell và sau đó đẻ trứng một-single use “daemon” máy chủ đó hy vọng sẽ đọc tập tin cấu hình của nó trong nhà dir của người sử dụng từ xa.

nhưng khi kết nối với root, theo / var / log / message, nó đã tìm trong /etc/rsyncd.conf cho tệp cấu hình (vị trí chuẩn cho tệp rsyncd.conf khi không được sử dụng qua SSH.

Tôi đã buộc máy chủ ssh sử dụng đúng tệp cấu hình bằng cách thêm

command="rsync --config=/root/rsyncd.conf --server --daemon ."

đến /root/.ssh/authorized_keys.

Lý do tôi không đặt cấu hình ở vị trí mặc định là vì tôi không muốn ai đó vô tình khởi động một daemon rsync bình thường - Tôi chỉ muốn một daemon có nhiều quyền truy cập này khi nó có khóa ssh chính xác.


5

rsync trong chế độ daemon không phải là những gì tôi muốn đề xuất nếu bạn muốn khóa chặt nó càng tốt. Bạn muốn hạn chế lệnh rằng một khóa SSH được phép chạy và gọi lệnh sao chép bằng khóa đó.

Để tìm ra lệnh nào để hạn chế khóa, hãy chạy dòng lệnh rsync thích hợp với một sửa đổi nhỏ trong lệnh ssh:

rsync -avz -e 'ssh -v' stuff somewhere:/place

Bạn sẽ thấy một dòng trong đầu ra gỡ lỗi, chẳng hạn như:

debug1: Sending command: rsync --server -vlogDtprze.iLs . /place

Lệnh chính xác đó là những gì bạn muốn hạn chế khóa để có thể chạy trong .ssh / ủy quyền:

command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=

3
Tôi muốn có thể thực hiện các bản sao lưu chỉ đọc khác nhau của các bộ phận của hệ thống - ví dụ: sao lưu e-mail & cơ sở dữ liệu SQL mỗi ngày, nhưng những thứ khác mỗi tuần một lần. Tôi sẽ cần một lệnh cụ thể và một khóa cụ thể cho từng bản sao lưu có thể và tôi sẽ không thể thực hiện thêm các bản sao lưu đặc biệt với cùng một cơ sở hạ tầng.
rjmunro

2
Đủ công bằng - Tôi thực hiện "Để làm cho hệ thống bị hạn chế nhất có thể" hoàn toàn theo nghĩa đen :)
MikeyB

1
Bạn có thể đặt nhiều lệnh trong một tập lệnh và truyền tập lệnh cho các tham số làm đầu vào dòng đầu tiên.
alecco

1
Có cách nào để tạo ra chuỗi lệnh mà không cần phải thông qua thông tin gỡ lỗi không? '-VlogDtprze.iLs'
qodeninja
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.