GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte nového uživatele a ověření klíče SSH. pomocí Ansible na Ubuntu 18.04

Ansible je jednoduchý automatizační nástroj, který automatizuje nasazování softwarových aplikací, poskytování cloudu a správu konfigurace. Je to nástroj pro orchestraci serverů, který vám pomáhá spravovat a řídit velké množství serverových uzlů z jednoho místa nazývaného 'Control Machines'. Ansible vytvořil Michael DeHaan v roce 2012 a je napsán v Pythonu a Powershell.

V tomto tutoriálu se naučíme, jak nasadit nového uživatele a povolit ověřování SSH Key-Based pomocí automatizačního nástroje Ansible. Také se naučíme, jak nakonfigurovat Ansible 'Control Machine' a také jak napsat jednoduchý ansible playbook.

Předpoklady

  • 2 nebo více serverů Ubuntu 18.04
    • 10.0.15.10      řídicí stroj
    • 10.0.15.21      ansi01
    • 10.0.15.22      ansi02
  • Oprávnění uživatele root

Co uděláme?

  1. Nastavení Ansible Control Machine
  2. Definujte uživatele a klíč SSH
  3. Vytvořit soubor inventáře
  4. Vytvořit Ansible Playbook
  5. Nasazení serveru pomocí Příručky
  6. Testování

Krok 1 – Nastavení Ansible Control Machine

V tomto tutoriálu budeme používat servery Ubuntu 16.04 jako Ansible 'Machine Control' a ansible hostitele. Prvním krokem, který musíme udělat, je nastavit 'ovládací stroj'.

Spuštěním následujícího příkazu nainstalujeme python a ansible na ansible 'control machine'.

sudo apt install python ansible -y

Po dokončení instalace přidáme nového uživatele systému.

Přidáme nového uživatele s názvem 'provision', aby bylo možné provádět zřizování serveru pomocí Ansible.

Přidejte „provoz“ nového uživatele a dejte uživateli heslo.

useradd -m -s /bin/bash poskytnutí
passwd poskytnutí

Nyní přidejte uživatele 'provision' pro sudo bez hesla vytvořením nového konfiguračního souboru pod '/etc/sudoers.d/' pomocí příkazu níže.

echo  -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL'> /etc/sudoers.d/provision

Byl vytvořen nový uživatel a nyní může používat sudo bez hesla.

Krok 2 – Definice uživatele a klíče SSH

V tomto kroku definujeme uživatele pro ansible hostitele. Tohoto uživatele automaticky vytvoří ansible, takže nám stačí definovat uživatelské jméno, heslo a veřejný klíč ssh.

Pro každý server ('ansi01' a 'ansi02') vytvoříme nového uživatele s názvem 'provision' s heslem 'secret01'. A heslo 'secret01' musíme zašifrovat pomocí příkazu mkpasswd.

Zašifrujte heslo 'secret01' pomocí příkazu níže.

mkpasswd --method=SHA-512
ZADEJTE HESLO 'secret01'

Poznámka:

Ujistěte se, že je v systému nainstalován balíček 'whois', nebo jej můžete nainstalovat pomocí následujícího příkazu.

sudo apt install whois -y

A získáte heslo šifrované SHA-512.

Dále vygenerujeme nový klíč ssh.

Přihlaste se k uživateli 'provision' a vygenerujte klíč ssh pomocí příkazu ssh-keygen.

su - provize
ssh-keygen -t rsa

Nyní je uživatel a heslo definováno a ssh klíč byl vytvořen (umístěný v adresáři '.ssh').

Krok 3 – Vytvoření nového inventáře

V tomto kroku definujeme soubory inventáře pro všechny hostitele serveru.

Přihlaste se jako uživatel 'provision' a vytvořte nový adresář pro projekt.

su - provize
mkdir -p ansible01/

Přejděte do adresáře 'ansible01' a vytvořte nový soubor inventáře 'inventory.ini' pomocí vim.

cd ansible01/
vim inventář.ini

Zde vložte následující konfiguraci.

[webový server]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22

Uložte a ukončete.

Nyní vytvořte nový konfigurační soubor ansible 'ansible.cfg'.

vim ansible.cfg

Zde vložte následující konfiguraci.

[výchozí]
inventář =/home/provision/ansible01/inventory.ini

Uložte a ukončete.

Soubor inventáře ansible byl vytvořen a naše skripty ansible budou umístěny pod uživatelem 'provision' v adresáři 'ansible01'.

Krok 4 – Vytvoření Ansible Playbook

Ansible Playbook je sada instrukcí, které odešlete ke spuštění na jednom serveru nebo skupině hostitelů serveru. Představuje ansible-provisioning, kde je automatizace definována jako úkoly a všechny úlohy, jako je instalace balíčků, úprava souborů, budou prováděny moduly ansible.

V tomto kroku vytvoříme nový ansible playbook pro nasazení nového uživatele, nasazení klíče ssh a konfiguraci služby ssh.

Než vytvoříme nový ansible playbook, naskenujeme všechny otisky prstů serveru pomocí příkazu ssh-keyscan, jak je uvedeno níže.

ssh-keyscan 10.0.15.21>> ~/.ssh/known_hosts
ssh-keyscan 10.0.15.22>> ~/.ssh/known_hosts

Otisk těchto serverů bude uložen v souboru '.ssh/known_hosts'.

Poznámka:

Pokud máte mnoho serverových uzlů, můžete si uložit seznam hostitelů a poté ručně naskenovat otisk klíče ssh pomocí skriptu bash, jak je uvedeno níže.

for i v $(cat list-hosts.txt)
proveďte
ssh-keyscan $i>> ~/.ssh/known_hosts
hotovo

Dále vytvořte ansible playbook s názvem 'deploy-ssh.yml' pomocí vim.

vim deploy-ssh.yml

Vložit podle ansible playbook tam.

---
- hostitelé:všichni
  vars:
    - Provide_password:'$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB'Ug3cq/jseB/.DViC01SqDy.DViCcf5d8zlx0>  collect_facts:no
  remote_user:root

  úkoly:

  - name:Přidat nového uživatele s názvem ustanovení
    user:
         name=provizorní
         password={{ provizorní_heslo }}

  - jméno:Přidat uživatele zřízení do sudoers
    kopie:
         cíl:"/etc/sudoers.d/provision "
         content:"provision  ALL=(ALL)  NOPASSWD:ALL"

  - název:Nasadit klíč SSH
    autorizovaný_klíč:user=provision
                {     klíč lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
                    stav=present

  - jméno:Zakázat ověřování hesla
    lineinfile:
          dest=/etc/ssh/sshd_config
          regexp='^PasswordAuthentication'
          line="PasswordAuthentic ation no"
          state=present
          backup=yes
    notify:
      - restartujte ssh

  - name:Zakázat přihlášení ke kořenu
    lineinfile:
          dest=/etc/ssh/sshd_config
          regexp='^PermitRootLogin'
          line="PermitRootLogin no"
    y =y /  =   br          =             notify:
      - restart ssh

  handlery:
  - name:restart ssh
    service:
      name=sshd
      stav=restartováno

Uložte a ukončete.

Ve skriptu příručky:

  • vytváříme skript playbook 'deploy-ssh.yml', který se použije na všech serverech definovaných v souboru 'inventory.ini'.
  • vytváříme ansible proměnnou 'provision_password' obsahující zašifrované heslo pro nového uživatele.
  • Nastavte fakta Ansible na 'ne'.
  • Definujte uživatele „root“ jako vzdáleného uživatele pro provádění automatizace úloh.
  • Vytváříme nové úlohy pro přidání nového uživatele, přidáme uživatele do sudoers a nahrajeme klíč ssh.
  • Vytváříme nové úlohy pro konfiguraci služeb ssh, deaktivaci přihlášení uživatele root a deaktivaci ověřování heslem. Úlohy pro konfiguraci ssh spustí obslužné rutiny 'restart ssh'.
  • Vytváříme obslužnou rutinu pro restart služby ssh.

Krok 5 – Spusťte příručku

Přihlaste se k uživateli 'provision' a přejděte do adresáře 'ansible01'.

su - provize
cd ansible01/

Nyní spusťte playbook 'deploy-ssh.yml' pomocí příkazu, jak je uvedeno níže.

ansible-playbook deploy-ssh.yml --ask-pass

Zadejte heslo uživatele root a získáte výsledek, jak je uvedeno níže.

Všechny úlohy pro nasazení nového uživatele a klíče ssh byly úspěšně dokončeny.

Krok 6 – Testování

Otestujte pomocí příkazu ansible.

ansible webserver -m ping
ansible webserver -m shell -a id

Nyní obdržíte zelené zprávy, jak je uvedeno níže.

Nyní můžeme spravovat tyto servery 'ansi01' a 'ansi02' pomocí Ansible a uživatel 'provision' bude výchozím uživatelem pro Ansible.

Testování připojení k serverům

ssh 10.0.15.21
ssh 10.0.15.22

Ke každému serveru budete připojeni pomocí výchozího souboru klíče '.ssh/id_rsa' a pomocí uživatelského 'provision'.

Nasazení nového uživatele a klíče ssh pomocí ansible bylo úspěšně dokončeno.


Ubuntu
  1. Počáteční nastavení serveru s Ubuntu 14.04

  2. Jak používat Ansible k instalaci a konfiguraci Redis 6 na Ubuntu 20.04

  3. Používáte Ubuntu s nastavením na dvou obrazovkách?

  1. IPsec VPN založená na StrongSwan využívající certifikáty a předem sdílený klíč na Ubuntu 16.04

  2. Nainstalujte a nastavte OpenVPN Server na Ubuntu 20.04

  3. Nastavte SFTP a Zabraňte SSH na Ubuntu 20.04

  1. Jak nastavit klíče SSH na Ubuntu 18.04

  2. Jak nastavit klíče SSH na Ubuntu 20.04

  3. Pomocí Ansible nainstalujte a nakonfigurujte Elasticsearch na Ubuntu 20.04