Ansible - Akses melalui Bastion dengan MFA

9

Di lingkungan saya saat ini, saya memiliki semua server Linux saya hanya dapat diakses melalui bastion host, yang telah mengaktifkan MFA.

Saya telah berhasil mendapatkan Kemungkinan untuk berhasil berbicara ke server melalui benteng, satu-satunya masalah adalah bahwa ia membuat koneksi baru ke benteng untuk setiap host, yang berarti saya harus memasukkan kunci MFA sebanyak saya memiliki server. Waktu yang buruk. :(

Saya sudah mencoba bermain-main dengan hal-hal seperti ini di konfigurasi ssh saya untuk mencoba membuat multiplexing berfungsi:

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

Sayangnya sepertinya tidak melakukannya. Adakah yang punya tips tentang bagaimana saya bisa menghentikan Ansible membangun kembali koneksinya melalui host benteng saya untuk setiap host yang disentuhnya?

Terima kasih!

Paul Kirby
sumber
Mungkin sudah terlintas di benak Anda, tetapi ... Jika host bastion Anda memungkinkan akses login biasa dan bukan hanya penerusan paket, dan konfigurasi yang memungkinkan Anda tidak mengandung volume file yang besar, Anda bisa mencoba menjalankan konfigurasi Anda langsung dari bastion .
Parthian Shot
Tidak harus dari host benteng tetapi bisa host di lingkungan yang sama. Kami telah mendedikasikan host kontrol Ansible. Ini memastikan pengguna tidak memiliki konfigurasi Animate yang aneh atau versi Ansible yang tidak didukung yang berjalan. Ini juga meningkatkan kecepatan playbook banyak.
udondan
(Saya tidak tahu apa itu MFA) Sudahkah Anda mengaktifkan ForwardAgentkonfigurasi ssh di workstation Anda (bukan benteng)
Baptiste Mille-Mathias

Jawaban:

1

Saya hanya tersandung pada posting blog ini tentang menjalankan Ansible dengan host benteng .

Tampaknya Anda perlu menambahkan host benteng ke host kontrol 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

Edit ssh_argsdi dalam ansible.cfg:

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

Itu harus menutupi bastionbagian konfigurasi. Untuk MFAbagian beberapa pengguna dalam masalah github klaim bahwa adalah mungkin untuk menggunakan sesi ssh di Ansible dibuka di luar Ansible.

Saya membuka koneksi awal ke host yang memiliki 2FA, kemudian di jendela lain jalankan sesuatu seperti:

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

Saya tidak memiliki setup host bastion di tangan tapi saya pikir strategi ini patut dicoba.

Henrik Pingel
sumber