Tôi đã xem xét điều này trong vài giờ, có vẻ như phương pháp này sd_bus_start đã được thay đổi để bao gồm kiểm tra bổ sung. Tôi không thể thu hẹp những gì nó đang tìm kiếm, tuy nhiên tôi đã có thể đưa ra một giải pháp tinh tế hơn để hoàn thành cùng một nhiệm vụ bằng cách sử dụng các lệnh systemctl từ xa thay vì gắn tất cả các thư mục từ Máy chủ.
hệ thống từ xa
hệ thống
hỗ trợ các lệnh từ xa thông qua --host / -H
lá cờ. Nó đang sử dụng ssh để kết nối với máy chủ từ xa, vì vậy sẽ cần một cặp khóa ssh. Vì chúng tôi đang kiểm soát máy chủ mà chúng tôi đang sử dụng nên việc thiết lập này khá đơn giản.
Lệnh Docker (hoặc Kubernetes arg)
Dưới đây là toàn bộ câu lệnh có thể sử dụng, mình sẽ chia nhỏ từng phần bên dưới. Các giả định của container là nó có hệ thống
và ssh
được cài đặt, vùng chứa đang chạy trên mạng máy chủ và rằng nguồn gốc
thư mục chính của tài khoản được gắn kết (bạn có thể sử dụng cách sử dụng khác nếu muốn).
(ls ~/.ssh/id_rsa || ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N "")
&& (grep -qxF $(cat ~/.ssh/id_rsa.pub) ~/.ssh/authorized_keys || echo $(cat ~/.ssh/id_rsa.pub) > ~/.ssh/authorized_keys)
&& (grep -qxF "StrictHostKeyChecking no" ~/.ssh/config || echo "StrictHostKeyChecking no" >> ~/.ssh/config)
&& (grep -qxF "UserKnownHostsFile /dev/null" ~/.ssh/config || echo "UserKnownHostsFile /dev/null" >> ~/.ssh/config)
&& systemctl -H [email protected] bắt đầu nfs-server.service
Lệnh này đang xem nếu ~/.ssh/id_rsa
tệp tồn tại, nếu không thì tạo một tệp.
(ls ~/.ssh/id_rsa || ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N "")
Bây giờ chúng tôi thêm khóa công khai của mình vào các khóa được ủy quyền nếu nó chưa tồn tại trong tệp.
(grep -qxF "$(cat ~/.ssh/id_rsa.pub)" ~/.ssh/authorized_keys || echo "$(cat ~/.ssh/id_rsa.pub)" > ~/.ssh/authorized_keys)
Điều này có thể được thực hiện an toàn hơn bằng cách đặt nó vào một phần của cấu hình ssh chỉ dành cho 127.0.0.1
, Nhưng chúng tôi cần
(grep -qxF "StrictHostKeyChecking no" ~/.ssh/config || echo "StrictHostKeyChecking no" >> ~/.ssh/config)
&& (grep -qxF "UserKnownHostsFile /dev/null" ~/.ssh/config || echo "UserKnownHostsFile /dev/null" >> ~/.ssh/config)
Cuối cùng chúng ta có thực tế hệ thống
chỉ huy. chú ý -H [email protected]
.
systemctl -H [email protected] bắt đầu nfs-server.service
Để bảo mật tối đa, trước tiên, tốt nhất bạn nên thiết lập khóa và người dùng bên ngoài vùng chứa (thông qua Ansible hoặc tương tự) và chỉ cho phép systemctl -H
lệnh bên trong container.