Saya mencoba untuk menghasilkan kembali kunci host ssh pada beberapa server jarak jauh via ansible (dan ssh-keygen
), tetapi file-file tersebut tampaknya tidak muncul. Playbook berjalan OK, tetapi file pada remote tidak diubah.
Saya perlu menggunakan echo -e
hackery karena remote ini menjalankan Ubuntu 14.04 dan belum memiliki versi yang benar dari yang python-pexpect
tersedia (sesuai dengan yang dimungkinkan).
Apa yang saya lewatkan? Buku pedoman dan hasil saya di bawah:
buku pedoman
---
- hosts: all
become: true
gather_facts: false
tasks:
- name: Generate /etc/ssh/ RSA host key
command : echo -e 'y\n'|ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C "" -N ""
register: output
- debug: var=output.stdout_lines
- name: Generate /etc/ssh/ DSA host key
command : echo -e 'y\n'|ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C "" -N ""
register: output
- debug: var=output.stdout_lines
- name: Generate /etc/ssh/ ECDSA host key
command : echo -e 'y\n'|ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -C "" -N ""
register: output
- debug: var=output.stdout_lines
keluaran
$ ansible-playbook ./playbooks/ssh-hostkeys.yml -l myhost.mydom.com,
SUDO password:
PLAY [all] **********************************************************************************************
TASK [Generate /etc/ssh/ RSA host key] ******************************************************************
changed: [myhost.mydom.com]
TASK [debug] ********************************************************************************************
ok: [myhost.mydom.com] => {
"output.stdout_lines": [
"y",
"|ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C -N "
]
}
TASK [Generate /etc/ssh/ DSA host key] ******************************************************************
changed: [myhost.mydom.com]
TASK [debug] ********************************************************************************************
ok: [myhost.mydom.com] => {
"output.stdout_lines": [
"y",
"|ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C -N "
]
}
TASK [Generate /etc/ssh/ ECDSA host key] ****************************************************************
changed: [myhost.mydom.com]
TASK [debug] ********************************************************************************************
ok: [myhost.mydom.com] => {
"output.stdout_lines": [
"y",
"|ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -C -N "
]
}
PLAY RECAP **********************************************************************************************
myhost.mydom.com : ok=6 changed=3 unreachable=0 failed=0
file: state:absent ...
pendekatan atas hal-hal perpipaan ke ssh-keygen. Meskipun mungkin tidak ada banyak perbedaan.absent
beberapa hari yang lalu. Secara efektif itu akan menghapus file sebelum menghasilkan kembali kunci. Ini pendekatan yang jauh lebih jelas. Terima kasih.The ansible
command
modul tidak lulus perintah melalui shell . Ini berarti Anda tidak dapat menggunakan operator shell seperti pipa, dan itulah sebabnya Anda melihat simbol pipa di output. Sejauh menyangkut yang mungkin, itu telah mengeksekusi perintahecho
dengan semua sisa baris sebagai argumenecho
.Jika Anda membutuhkan baris perintah yang diproses oleh shell, gunakan
shell
sebagai ganticommand
.Dan, seharusnya ada cara yang lebih baik untuk membuat kembali kunci host ssh, tapi saya tidak dapat menemukannya sekarang ...
sumber
echo ...
sedikit tidak bekerja setelah menjalankan kedua (saya sedang menguji di/tmp/
mana tombol tidak ada pertama kali sekitar). Saya terpaksa menghapus kunci host terlebih dahulu, seperti yang Anda sebutkan, dan menghasilkan yang baru. Sejauh membuat kunci secara otomatis dibuat kembali, ini tergantung pada distribusi Anda, benar? Tidak semua distro Linux menggunakan systemd.Gunakan modul khusus untuk tugas ini:
sumber
maaf, tapi saya tidak bisa menggunakan "create" dalam suatu tugas. saya mendapatkan kesalahan berikut:
secara konsekuen, saya menggunakan tugas-tugas berikut:
sumber
@Zoredache memiliki jawaban yang benar tetapi gagal (dicatat oleh @MaxiReglisse) untuk versi terbaru dari Ansible. Gunakan kode berikut sebagai gantinya:
sumber
Pilihan lain adalah menggunakan modul pengguna . Sisi positifnya adalah Anda akan mendapatkan tugas idempoten. Berikut adalah contoh cara membuat kunci ssh di localhost:
sumber
Gunakan openssh_keypair dan module berwenang_key untuk membuat dan menggunakan kunci secara bersamaan tanpa menyimpannya ke host yang memungkinkan.
sumber