From 537b1b0842e6e95fcba7129d103b1f58653f1931 Mon Sep 17 00:00:00 2001 From: Sven Velt Date: Mon, 16 Sep 2024 16:12:23 +0200 Subject: [PATCH] README: SSH-Agent und LXC --- README.md | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/README.md b/README.md index 13910b1..e377c2f 100644 --- a/README.md +++ b/README.md @@ -51,3 +51,132 @@ lrwxrwxrwx 1 root root 18 Aug 17 21:58 /etc/alternatives/vim -> /usr/bin/vim.bas +## SSH-Agent + +### SSH-Agent in einer Sitzung starten + +``` +kurs@tn00-purple:~# eval $(ssh-agent) +Agent pid 2720104 +``` + +### SSH-Key am Agent registrieren +``` +kurs@tn00-purple:~# ssh-add +Enter passphrase for /home/svelt/.ssh/id_ed25519: +``` + +### Ein SSH-Agent in mehreren SSH-Verbindungen + +1. SSH-Agent starten +``` +kurs@tn00-purple:~# eval $(ssh-agent | tee ~/.ssh-agent.sh) +SSH_AUTH_SOCK=/tmp/ssh-r4RVMmRg9KAR/agent.2720217; export SSH_AUTH_SOCK; +SSH_AGENT_PID=2720218; export SSH_AGENT_PID; +echo Agent pid 2720218; +Agent pid 2720218; +``` +2. In **jeder weiteren** SSH-Verbindung auf die VM (per copy&paste): + - Kann für weitere Verbindungen auch später gemacht werden +``` +kurs@tn00-purple:~# source ~/.ssh-agent.sh +Agent pid 2720218; +``` +3. Verbindung zum SSH-Agent mit `ssh-add -l` testen + - "Could not connect to agent" -> Agent läuft nicht und/oder Variablen nicht gesetzt + - "This agent has no identities" -> Verbindung zum Agent geht, Agent hat aber keine Keys + - Key -> Verbindung zum Agent geht, Key(s) registriert und verfügbar (4. überflüssig) +4. SSH-Key registrieren + - nur einmal nötig + - Variablen via Script aus 2. Schritt müssen gesetzt sein +``` +kurs@tn00-purple:~# ssh-add +``` +Damit könnt Ihr dann den einen Agent in allen SSH-Verbindungen zur VM nutzen. + +### Alternative: Keychain + +Voraussetzung: SSH-Key existiert, liegt unter (beliebigem) Namen unter `~/.ssh/` + +1. Keychain installieren +``` +kurs@tn00-purple:~$ apt install keychain +``` +2. Von Hand testen +``` +kurs@tn00-purple:~$ keychain ~/.ssh/id_ed25519 + + * keychain 2.8.5 ~ http://www.funtoo.org + * Starting ssh-agent... + * Adding 1 ssh key(s): /home/kurs/.ssh/id_ed25519 +Enter passphrase for /home/kurs/.ssh/id_ed25519: + * ssh-add: Identities added: /home/kurs/.ssh/id_ed25519 + +kurs@tn00-purple:~$ ssh-add -l +Could not open a connection to your authentication agent. + +kurs@tn00-purple:~$ cat ~/.keychain/${HOSTNAME}-sh +SSH_AUTH_SOCK=/tmp/ssh-pZf3VyTB4hs3/agent.1612572; export SSH_AUTH_SOCK; +SSH_AGENT_PID=1612575; export SSH_AGENT_PID; + +kurs@tn00-purple:~$ . ~/.keychain/${HOSTNAME}-sh +kurs@tn00-purple:~$ ssh-add -l +256 SHA256:9+6FWilZKB46vt/n8HX3eVggjmdt40vXclBPkggaHvM kurs@tn00-purple (ED25519) +``` +3. In Shell automatisch starten +``` +cat <>.bashrc +keychain ~/.ssh/id_ed25519 +. ~/.keychain/${HOSTNAME}-sh +EOF +``` + + + +## LXC +LXC == LinuX Container + +Mit den selben Kernel-Mechanismen ("cgroups", "IP namespaces") wie z.B. Docker wird ein - in z.B. ein Verzeichnis installiertes - Linux-System gestartet und dabei vom Hauptsystem getrennt. + +Auf jeder VM sind ~25 LXC(ontainer) mit verschiedenen Distributionen installiert. Die Distribution sollte sich aus den Namen der Container ableiten lassen. + +### Anzeigen der Container +``` +root@tn00-purple:~# lxc-ls -f +NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED… +tn00-alma8 RUNNING 1 ansible 192.168.1.138 - false +tn00-alpine3b RUNNING 1 ansible 192.168.1.194 - false +tn00-alpine3c RUNNING 1 ansible 192.168.1.139 - false +tn00-alpine3d RUNNING 1 ansible 192.168.1.152 - false +tn00-alpine3e RUNNING 1 ansible 192.168.1.134 - false +tn00-arch RUNNING 1 ansible 192.168.1.192 - false +[...] +``` + +### Container in /etc/hosts hinzufügen +Bitte nur einmal ;) ausführen! +``` +sudo lxc-ls -f -F ipv4,name | grep -v NAME | sudo tee -a /etc/hosts +``` + +### Wechseln in den Container +``` +root@tn00-purple:~# lxc-attach tn00-alpine3b +~# cat /etc/os-release +NAME="Alpine Linux" +ID=alpine +VERSION_ID=3.11.0 +PRETTY_NAME="Alpine Linux v3.11" +HOME_URL="https://alpinelinux.org/" +BUG_REPORT_URL="https://bugs.alpinelinux.org/" +~# ^D + ``` +Beenden mit Strg-D (Shell beenden) + +### Zugriff auf Dateien im Container +Die Container sind auf File-Basis unter `/var/lib/lxc/CONTAINERNAME/` installiert, das File-System liegt dort jeweils im Verzeichnis `rootfs`. + +Ein `cat /var/lib/lxc/tn00-alpine3b/rootfs/etc/os-release` im Host würde also die gleiche Dateien anzeigen wie oben. + + +