Ansible Tutorial · 6 min read · Nov 16, 2025
Neuen Benutzer und SSH-Schlüssel-Authentifizierung mit Ansible auf Ubuntu 18.04 einrichten
Ansible ist ein einfaches Automatisierungstool, das die Bereitstellung von Softwareanwendungen, Cloud-Bereitstellung und Konfigurationsmanagement automatisiert. Es ist ein Server-Orchestrierungstool, das Ihnen hilft, eine große Anzahl von Serverknoten von einem einzigen Ort aus zu verwalten und zu steuern, den man als “Control Machines” bezeichnet. Ansible wurde 2012 von Michael DeHaan erstellt und ist in Python und Powershell geschrieben.
In diesem Tutorial werden wir lernen, wie man einen neuen Benutzer bereitstellt und die SSH-Schlüsselbasierte Authentifizierung mit dem Automatisierungstool Ansible aktiviert. Wir werden auch lernen, wie man die Ansible “Control Machine” konfiguriert und wie man ein einfaches Ansible-Playbook schreibt.
Voraussetzungen
- 2 oder mehr Ubuntu 18.04 Server - 10.0.15.10 control-machine
- 10.0.15.21 ansi01
- 10.0.15.22 ansi02
- Root-Rechte
Was werden wir tun?
- Ansible Control Machine einrichten
- Benutzer und SSH-Schlüssel definieren
- Inventar-Datei erstellen
- Ansible-Playbook erstellen
- Server mit Playbook bereitstellen
- Testen
Schritt 1 - Ansible Control Machine einrichten
In diesem Tutorial verwenden wir die Ubuntu 16.04 Server als Ansible “Machine Control” und Ansible-Hosts. Der erste Schritt, den wir unternehmen müssen, ist die Einrichtung der “Control Machine”.
Wir werden Python und Ansible auf der Ansible “Control Machine” installieren, indem wir den folgenden Befehl ausführen.
sudo apt install python ansible -y
Nachdem die Installation abgeschlossen ist, werden wir einen neuen Systembenutzer hinzufügen.
Wir werden einen neuen Benutzer namens “provision” hinzufügen, um die Serverbereitstellung mit Ansible durchzuführen.
Fügen Sie den neuen Benutzer “provision” hinzu und geben Sie dem Benutzer ein Passwort.
useradd -m -s /bin/bash provision
passwd provisionJetzt fügen Sie den Benutzer “provision” für sudo ohne Passwort hinzu, indem Sie eine neue Konfigurationsdatei unter “/etc/sudoers.d/“ mit dem folgenden Befehl erstellen.
echo -e 'provision ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/provisionEin neuer Benutzer wurde erstellt, und jetzt kann er sudo ohne Passwort verwenden.

Schritt 2 - Benutzer und SSH-Schlüssel definieren
In diesem Schritt werden wir den Benutzer für Ansible-Hosts definieren. Dieser Benutzer wird automatisch von Ansible erstellt, daher müssen wir nur den Benutzernamen, das Passwort und den SSH-öffentlichen Schlüssel definieren.
Für jeden Server (“ansi01” und “ansi02”) werden wir einen neuen Benutzer namens “provision” mit dem Passwort “secret01” erstellen. Und wir müssen das Passwort “secret01” mit dem Befehl mkpasswd verschlüsseln.
Verschlüsseln Sie das Passwort “secret01” mit dem folgenden Befehl.
mkpasswd --method=SHA-512
GEBEN SIE DAS PASSWORT 'secret01' EINHinweis:
Stellen Sie sicher, dass das Paket “whois” auf dem System installiert ist, oder Sie können es mit dem folgenden Befehl installieren.
sudo apt install whois -yUnd Sie erhalten das SHA-512-verschlüsselte Passwort.
Als nächstes werden wir einen neuen SSH-Schlüssel generieren.
Melden Sie sich beim Benutzer “provision” an und generieren Sie den SSH-Schlüssel mit dem Befehl ssh-keygen.
su - provision
ssh-keygen -t rsaJetzt wurden der Benutzer und das Passwort definiert, und der SSH-Schlüssel wurde erstellt (befindet sich im Verzeichnis “.ssh”).

Schritt 3 - Neues Inventar erstellen
In diesem Schritt werden wir die Inventar-Dateien für alle Server-Hosts definieren.
Melden Sie sich als Benutzer “provision” an und erstellen Sie ein neues Verzeichnis für das Projekt.
su - provision
mkdir -p ansible01/Gehen Sie in das Verzeichnis “ansible01” und erstellen Sie eine neue Inventar-Datei “inventory.ini” mit vim.
cd ansible01/
vim inventory.iniFügen Sie die folgende Konfiguration dort ein.
[webserver]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22Speichern und beenden.
Jetzt erstellen Sie eine neue Ansible-Konfigurationsdatei “ansible.cfg”.
vim ansible.cfgFügen Sie die folgende Konfiguration dort ein.
[defaults]
inventory = /home/provision/ansible01/inventory.iniSpeichern und beenden.

Die Ansible-Inventar-Datei wurde erstellt, und unsere Ansible-Skripte werden sich unter dem Benutzer “provision” im Verzeichnis “ansible01” befinden.
Schritt 4 - Ansible-Playbook erstellen
Ein Ansible-Playbook ist eine Reihe von Anweisungen, die Sie senden, um auf einem einzelnen oder einer Gruppe von Server-Hosts ausgeführt zu werden. Es stellt die Ansible-Bereitstellung dar, bei der die Automatisierung als Aufgaben definiert ist, und alle Aufgaben wie das Installieren von Paketen, das Bearbeiten von Dateien werden von Ansible-Modulen durchgeführt.
In diesem Schritt werden wir ein neues Ansible-Playbook erstellen, um einen neuen Benutzer bereitzustellen, den SSH-Schlüssel bereitzustellen und den SSH-Dienst zu konfigurieren.
Bevor wir ein neues Ansible-Playbook erstellen, werden wir alle Serverfingerabdrücke mit dem Befehl ssh-keyscan scannen, wie unten gezeigt.
ssh-keyscan 10.0.15.21 >> ~/.ssh/known_hosts
ssh-keyscan 10.0.15.22 >> ~/.ssh/known_hostsDiese Serverfingerabdrücke werden in der Datei “.ssh/known_hosts” gespeichert.

Hinweis:
Wenn Sie viele Serverknoten haben, können Sie Ihre Hostliste speichern und dann manuell den SSH-Schlüssel-Fingerabdruck mit einem Bash-Skript scannen, wie unten gezeigt.
for i in $(cat list-hosts.txt)
do
ssh-keyscan $i >> ~/.ssh/known_hosts
doneAls nächstes erstellen Sie das Ansible-Playbook mit dem Namen “deploy-ssh.yml” mit vim.
vim deploy-ssh.ymlFügen Sie das folgende Ansible-Playbook dort ein.
---
- hosts: all
vars:
- provision_password: '$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DViTO1SpUnoCy.dxcOf8hyfitGq5V0yhgXccxzlqm2o.I3SlDJ0'
gather_facts: no
remote_user: root
tasks:
- name: Fügen Sie einen neuen Benutzer namens provision hinzu
user:
name=provision
password={{ provision_password }}
- name: Fügen Sie den Benutzer provision zu den Sudoers hinzu
copy:
dest: "/etc/sudoers.d/provision"
content: "provision ALL=(ALL) NOPASSWD: ALL"
- name: SSH-Schlüssel bereitstellen
authorized_key: user=provision
key="{{ lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
state=present
- name: Passwortauthentifizierung deaktivieren
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PasswordAuthentication'
line="PasswordAuthentication no"
state=present
backup=yes
notify:
- restart ssh
- name: Root-Login deaktivieren
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PermitRootLogin'
line="PermitRootLogin no"
state=present
backup=yes
notify:
- restart ssh
handlers:
- name: restart ssh
service:
name=sshd
state=restartedSpeichern und beenden.
Im Playbook-Skript:
- erstellen wir das Playbook-Skript “deploy-ssh.yml”, das auf allen Servern angewendet wird, die in der Datei “inventory.ini” definiert sind.
- wir erstellen die Ansible-Variable “provision_password”, die das verschlüsselte Passwort für den neuen Benutzer enthält.
- Setzen Sie die Ansible-Fakten auf “nein”.
- Definieren Sie den “root”-Benutzer als Remote-Benutzer, um die Automatisierung von Aufgaben durchzuführen.
- Wir erstellen neue Aufgaben zum Hinzufügen eines neuen Benutzers, fügen den Benutzer zu den Sudoers hinzu und laden den SSH-Schlüssel hoch.
- Wir erstellen neue Aufgaben zur Konfiguration der SSH-Dienste, deaktivieren den Root-Login und deaktivieren die Passwortauthentifizierung. Aufgaben zur Konfiguration der SSH werden die “restart ssh”-Handler auslösen.
- Wir erstellen einen Handler zum Neustarten des SSH-Dienstes.
Schritt 5 - Das Playbook ausführen
Melden Sie sich beim Benutzer “provision” an und gehen Sie in das Verzeichnis “ansible01”.
su - provision
cd ansible01/Jetzt führen Sie das Playbook “deploy-ssh.yml” mit dem folgenden Befehl aus.
ansible-playbook deploy-ssh.yml --ask-passGeben Sie Ihr Root-Passwort ein, und Sie erhalten das Ergebnis wie unten.

Alle Aufgaben zur Bereitstellung eines neuen Benutzers und SSH-Schlüssels wurden erfolgreich abgeschlossen.
Schritt 6 - Testen
Testen Sie mit dem Ansible-Befehl.
ansible webserver -m ping
ansible webserver -m shell -a idJetzt erhalten Sie die grünen Nachrichten wie unten.

Jetzt können wir die Server “ansi01” und “ansi02” mit Ansible verwalten, und der Benutzer “provision” wird der Standardbenutzer für Ansible sein.
Verbindung zu den Servern testen
ssh 10.0.15.21
ssh 10.0.15.22Und Sie werden mit jedem Server unter Verwendung des Standard-Schlüssels “.ssh/id_rsa” und des Benutzers “provision” verbunden.


Die Bereitstellung eines neuen Benutzers und SSH-Schlüssels mit Ansible wurde erfolgreich abgeschlossen.
Referenz
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.