Ansible - Truy cập thông qua Bastion w / MFA


9

Trong môi trường hiện tại của tôi, tôi có tất cả các máy chủ Linux của mình chỉ có thể truy cập thông qua máy chủ pháo đài, có bật MFA.

Tôi đã cố gắng để Ansible nói chuyện thành công với các máy chủ thông qua pháo đài, vấn đề duy nhất là nó thiết lập một kết nối mới với pháo đài cho mỗi máy chủ, nghĩa là tôi phải nhập nhiều khóa MFA như tôi có máy chủ. Thời gian tồi tệ :

Tôi đã thử làm rối tung những thứ như thế này trong cấu hình ssh của mình để thử hoạt động ghép kênh:

Host bastion
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 5m

Thật không may, nó dường như không làm điều đó. Bất cứ ai cũng có một số lời khuyên về cách tôi có thể ngăn Ansible thiết lập lại kết nối của mình thông qua máy chủ pháo đài của tôi cho mọi máy chủ mà nó chạm vào?

Cảm ơn!


Có thể đã xảy ra với bạn, nhưng ... Nếu máy chủ pháo đài của bạn cho phép truy cập đăng nhập thường xuyên thay vì chỉ chuyển tiếp gói và cấu hình ansible của bạn không chứa một khối lượng tệp khổng lồ, bạn có thể thử chỉ chạy cấu hình của mình trực tiếp từ pháo đài .
Bắn Parthian

Không nhất thiết phải từ máy chủ pháo đài nhưng nó có thể là bất kỳ máy chủ nào trong cùng một môi trường. Chúng tôi có máy chủ điều khiển Ansible chuyên dụng. Điều này đảm bảo người dùng không có cấu hình Ansible lạ hoặc phiên bản Ansible không được hỗ trợ đang chạy. Ngoài ra điều này cải thiện tốc độ playbook rất nhiều.
udondan

(Tôi không biết MFA là gì) Bạn có bật ForwardAgentcấu hình ssh của máy trạm không (không phải pháo đài)
Baptiste Mille-Mathias

Câu trả lời:


1

Tôi chỉ tình cờ thấy bài đăng trên blog này về việc chạy Ansible với một máy chủ pháo đài .

Rõ ràng bạn cần thêm máy chủ pháo đài vào máy chủ điều khiển ssh_config:

Host 10.10.10.*
  ProxyCommand ssh -W %h:%p bastion.example.com
  IdentityFile ~/.ssh/private_key.pem

Host bastion.example.com
  Hostname bastion.example.com
  User ubuntu
  IdentityFile ~/.ssh/private_key.pem
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 5m

Chỉnh sửa ssh_argstrong ansible.cfg:

[ssh_connection]
ssh_args = -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m control_path = ~/.ssh/ansible-%%r@%%h:%%p

Điều đó sẽ che đậy bastionmột phần của cấu hình. Đối với MFAmột số người dùng trong vấn đề github này tuyên bố rằng có thể sử dụng phiên ssh trong Ansible được mở bên ngoài Ansible.

Tôi mở kết nối ban đầu đến máy chủ có 2FA, sau đó trong một cửa sổ khác chạy một cái gì đó như:

ansible-playbook thing.yml --ssh-common-args='-o ControlPath=~/.ssh/connshare'

Tôi không có thiết lập máy chủ pháo đài trong tay nhưng tôi nghĩ chiến lược này đáng để thử.

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.