Tôi đã viết một kịch bản ansible để loại bỏ những khóa SSH từ các máy chủ từ xa:Thêm nhiều khóa SSH sử dụng ansible
---
- name: "Add keys to the authorized_keys of the user ubuntu"
user: ubuntu
hosts: www
tasks:
- name: "Remove key #1"
authorized_key: user=ubuntu key="{{ item }}" state=absent
with_file:
- id_rsa_number_one.pub
- name: "Remove key #2"
authorized_key: user=ubuntu key="{{ item }}" state=absent
with_file:
- id_rsa_number_two.pub
...
Thêm mỗi tập tin là một nhiệm vụ khác nhau là lố bịch, vì vậy tôi đã cố gắng sử dụng with_fileglob
:
- name: "Remove all keys at once"
authorized_key: user=ubuntu key="{{ item }}" state=absent
with_fileglob:
- /Users/adamatan/ansible/id_rsa*.pub
Nhưng điều này không thành công với dòng như thế này:
thất bại: [www.example.com] => (mục =/Người dùng/adamatan/ansible/id_rsa_one.pub) => {"không thành công": đúng, "mục": "/Users/adamatan/ansible/id_rsa_one.pub"} msg: khóa không hợp lệ được chỉ định:/Người dùng/adamatan/ansible/id_rsa_one.pub
Tệp khóa tương tự được xóa thành công bằng cách sử dụng tác vụ duy nhất nhưng không thành công khi nó là một phần của fileglob
.
Làm cách nào để thêm hoặc xóa các khóa SSH bằng ansible?
Vì vậy, sửa đổi này hoạt động tốt cho việc cập nhật/xóa hàng loạt. Đây là vấn đề của tôi - Tôi có chìa khóa trên các máy chủ từ một người không còn ở đây nữa. Làm thế nào tôi có thể thanh lọc và ghi đè lên tập tin authorized_keys với danh sách chủ của tôi về các phím hoạt động? Khi tôi chạy tập lệnh này, nó loại bỏ (nếu vắng mặt) các phím đang hoạt động của tôi hoặc thêm (nếu có) nhưng nó không bao giờ loại bỏ các khóa không có trong tệp * .pub của tôi. – Valien
@Valien cho nhiều khóa độc quyền, xem ví dụ trong [yêu cầu kéo] này (https://github.com/ansible/ansible-modules-core/pull/4167/files). – sudoman
Bạn cũng có thể tạo '~/.ssh /' và sao chép qua các tệp 'authorized_keys' tĩnh cho tất cả người dùng trong một số nhóm máy chủ. Trong trường hợp đó, bạn sẽ có toàn quyền kiểm soát nội dung tập tin. – sudoman