knb:ssh

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
knb:ssh [2019/09/24 16:15] Djangoknb:ssh [2020/06/04 18:48] – [SSH-Clientconfig] Django
Zeile 5: Zeile 5:
  
 ====== Administration eines Freifunk-Knotens via SSH ====== ====== Administration eines Freifunk-Knotens via SSH ======
-{{:ffmuc_logo.png?nolink&150 |Bild: Freifunk München Logo}} Zur Administration unseres bzw. unserer Freifunk-Knoten verwenden wir die **SSH**(([[https://de.wikipedia.org/wiki/Secure_Shell|Secure SHell]])), da uns hier der volle Zugriff auf den Router gestattet, Konfigurationen im laufenden Betrieb vorzunehmen, Parameter abzufragen oder auch zusätzlich Programm zu starten. Viele hilfreiche Informationen rund um die **SSH** finden sich unter anderem in Djangos WIKI im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7|Secure Shell]] zu finden.+{{:ffmuc_logo.png?nolink&150 |Bild: Freifunk München Logo}} Zur Administration unseres bzw. unserer Freifunk-Knoten verwenden wir die **SSH**(([[https://de.wikipedia.org/wiki/Secure_Shell|Secure SHell]])), da uns hier der volle Zugriff auf den Router gestattet, Konfigurationen im laufenden Betrieb vorzunehmen, Parameter abzufragen oder auch zusätzlich Programm zu starten. Ohne gewisse Vorkentnisse ist freilich die SSH selbst für den Einsteiger meist ein Buch mit sieben Siegeln. Es lohnt sich daher einen Blick in einschlägige Anleitungen, die viele hilfreiche Informationen rund um die **SSH** vorhalten, wie zum Beispiel in Djangos WIKI im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7|Secure Shell]] zu finden.
  
 ===== Vorbereitungen ===== ===== Vorbereitungen =====
 ==== SSH-Key ==== ==== SSH-Key ====
-Für den Zugriff benötigen wir natürlich ein entsprechendes SSH-Schlüsselpaar, welches wir uns zunächst erstellen. +Für den Zugriff benötigen wir natürlich ein entsprechendes SSH-Schlüsselpaar, welches wir uns zunächst erstellen. Aktuell ((Stand. 2020)) werden leider noch keine [[https://de.wikipedia.org/wiki/Curve25519|Ed25519]]Schlüssel, einem ein Elliptic Curve Signature Schema, welches beste Sicherheit bei vertretbaren Aufwand verspricht, als ECDSA, DSA oder RSA dies der Fall is, unterstützt. Somit werden wir uns einen RSA-Schlüssel mit ausreichend großer Schlüssellänge erstellen. 
-   ssh-keygen -b 4096 -t rsa -C [email protected] -f ~/.ssh/id_rsa4096_ff+  
 +   ssh-keygen -b 4096 -t rsa -C [email protected] -f ~/.ssh/id_rsa4096_ff
  
 <code>Generating public/private rsa key pair. <code>Generating public/private rsa key pair.
Zeile 33: Zeile 34:
  
 ==== SSH-Clientconfig ==== ==== SSH-Clientconfig ====
-Um nun nicht jedes mal beim Aufruf einer SSH-Verbindung zu einem unserer Knoten, Parameter wie **user** und die doch sehr langen **IPv6**-Adressen angeben zu müssen, hinterlegen dwir die entsprechenden Daten in der Konfigurationsdatei unseres lokalen SSH-Clients auf unserem Admin-Rechners. Dies hat darüber hinaus auch noch zusätzlich den Vorteildass z.B. von einem Netz aus, bei dem es "nur" **IPv4**-Adressen Verwendung finden wir keinen zusätzlichen Sprunghost angeben müssen. Dies erleichtert die Arbeit doch ungemeinvor allem dann wenn Dateien von und zum Router kopiert werden müssen. Hintergrundinformationen zur Clientkonfiguration sind im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7#client_konfiguration|Client Konfiguration bei der Secure Shell]] zu finden.+Um nun nicht jedes mal beim Aufruf einer SSH-Verbindung zu einem unserer Knoten, Parameter wie **user** und die doch sehr langen **IPv6**-Adressen angeben zu müssen, hinterlegen dwir die entsprechenden Daten in der Konfigurationsdatei unseres lokalen SSH-Clients auf unserem Admin-Rechners. Können wir den Zielhost direkt erreichenso brauchen wir die IPv6-Adresse nicht mit **[** maskieren, wir können diuese also direkt angebenewie in dem gezeigtem Beispiel 
 +**''Hostname 2001:608:a01:106:822a:a8ff:feea:fae3''**.
  
-So ist z.B. in nachfolgendem Konfigurationsbeispiel der Router **ff_pliening_gbw_od** direkt erreichbar und der Router **ff_pliening_gbw_od-e** nur über den Sprunghost mit Namen **jumphost**, der natürlich auch eine entsprechende Konfiguration aufweist. +Die Verwendung einer eignen individuellen SSH-Clinetkonfigurationsdatei hat darüber hinaus auch noch zusätzlich den Vorteil, dass z.B. von einem Netz aus, bei dem es "nur" **IPv4**-Adressen Verwendung finden wir keinen zusätzlichen Sprunghost angeben brauchen. Hier müssen wir lediglich dann darauf achten, dass die IPv6_Zieladresse dann mit Hilfe von **[** entsprechend maskiert werden, wie im nachfolgenden Beispiel beim Host **ff_pliening_gbw_od-e** dann **''Hostname [2001:608:a01:106:822a:a8ff:feea:fae3]''**. Dies erleichtert die Arbeit doch ungemein, vor allem dann wenn Dateien von und zum Router kopiert werden müssen. Hintergrundinformationen zur Clientkonfiguration sind im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7#client_konfiguration|Client Konfiguration bei der Secure Shell]] zu finden. 
-   vim ~/.ssh/config+ 
 +So ist z.B. in nachfolgendem Konfigurationsbeispiel der Router **ff_pliening_gbw_od** direkt erreichbar und der Router **ff_pliening_gbw_od-e** nur über den eigenen Sprunghost, der dann das Bindeglied zwischen IPv4 und IPv6 herstellt, mit Namen **jumphost**, der natürlich auch eine entsprechende Konfiguration aufweist. Der sicherheitsbewusste Admin von entsprechenden Hosts/Servern und Freifunkknoten wird natürlich unterschiedliches Schlüsselmaterial fü die verschiedenen Systeme (Sprungosts und anderen Servern) und den Freifunkknoten verwenen. Die jeweiligen Schlüssel werden mit dem Parameter **''IdentityFile''** definiert
 +   vim ~/.ssh/config
 <file bash ~/.ssh/config>Host jumphost <file bash ~/.ssh/config>Host jumphost
      Hostname 217.92.13.131      Hostname 217.92.13.131
Zeile 46: Zeile 50:
  
 Host ff_pliening_gbw_od Host ff_pliening_gbw_od
-     Hostname [2001:608:a01:106:822a:a8ff:feea:fae3]+     Hostname 2001:608:a01:106:822a:a8ff:feea:fae3
      Port 22      Port 22
      User root      User root
Zeile 62: Zeile 66:
  
 Wir können somit, wenn wir uns z.B. in einem IPv4-only Netzwerk aufhalten, ganz einfach durch den nachfolgenden Aufruf den Knoten **ff_pliening_gbw_od** erreichen. Wir können somit, wenn wir uns z.B. in einem IPv4-only Netzwerk aufhalten, ganz einfach durch den nachfolgenden Aufruf den Knoten **ff_pliening_gbw_od** erreichen.
-   ssh ff_pliening_gbw_od-e+   ssh ff_pliening_gbw_od-e
  
 Ebenso können wir so direkt Dateien auf den Knoten in das //**/tmp**//-Verzeichnis kopieren, da sich der SCP-Aufruf entsprechend vereinfacht, Bsp.:  Ebenso können wir so direkt Dateien auf den Knoten in das //**/tmp**//-Verzeichnis kopieren, da sich der SCP-Aufruf entsprechend vereinfacht, Bsp.: 
-   scp firmware ff_pliening_gbw_od-e:/tmp+   scp firmware ff_pliening_gbw_od-e:/tmp
  
 Hier wird nun ohne manuelle Umwege Datei **firmware** in das //**/tmp**//-Verzeichnis des Routers **ff_pliening_gbw_od**. Hier wird nun ohne manuelle Umwege Datei **firmware** in das //**/tmp**//-Verzeichnis des Routers **ff_pliening_gbw_od**.
Zeile 149: Zeile 153:
  
 ==== Anzahl verbundener Clients ==== ==== Anzahl verbundener Clients ====
-Zur Ausgabe der Anzahl der aktuell verbiundenen Clients verwendet man folgenden Aufruf:+Zur Ausgabe der Anzahl der aktuell (lokal) verbundenen Clients verwendet man folgenden Aufruf:
    grep -cEo "\[.*W.*\]+" /sys/kernel/debug/batman_adv/bat0/transtable_local    grep -cEo "\[.*W.*\]+" /sys/kernel/debug/batman_adv/bat0/transtable_local
  
   3   3
  
 +Anmerkung: Unterhalb von ''/sys/kernel/debug/batman_adv/bat0'' findet man in read-only "Pseudo"-Dateien auch alle weiteren Debug-Tabellen, die auch mit den verschiedenen Optionen von ''batctl'' (vgl. unten) zugänglich sind.
 ==== Gluon Release ==== ==== Gluon Release ====
    cat /lib/gluon/release    cat /lib/gluon/release
Zeile 231: Zeile 236:
    batctl o | grep adv    batctl o | grep adv
  
-  [B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)]+  [B.A.T.M.A.N. adv openwrt-2018.1-8, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)] 
 +   
 +Eine Alternative dazu ist auch: 
 +   grep adv /sys/kernel/debug/batman_adv/bat0/originators 
 +    
 +  [B.A.T.M.A.N. adv openwrt-2018.1-8, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0 BATMAN_V)]
  
 ==== Statistiken ==== ==== Statistiken ====
Zeile 266: Zeile 276:
  
 === Gateways mit Bandbreitenangaben === === Gateways mit Bandbreitenangaben ===
-Die Option **gwl** zeigt alle erreichbaren Gateways mit aktueller Bandbreite im Freifunknetz+Die Option **gwl** zeigt alle erreichbaren Gateways mit aktueller Bandbreite im Freifunknetz.
    batctl gwl    batctl gwl
 <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)] <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)]
Zeile 274: Zeile 284:
      
 === Liste aller Clients === === Liste aller Clients ===
-Eine Auflistung aller Clients im Freifunknetz sehen wir mit Angabe der Option **tg**+Eine Auflistung aller Clients im Freifunknetz sehen wir mit Angabe der Option **tg** (transglobal).
    batctl tg    batctl tg
 <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)] <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)]
Zeile 284: Zeile 294:
 </code> </code>
 === Summe aller WiFi-Nutzer im Netz === === Summe aller WiFi-Nutzer im Netz ===
-Wollegn wir wissen wieviele der zuvor abgefragten Clients als WLAN-Nutzer eingebucht sind erweitern wir die vorherige Abfrage wie folgt.+Wollen wir wissen, wie viele der zuvor abgefragten Clients als WLAN-Nutzer eingebucht sinderweitern wir die vorherige Abfrage wie folgt.
    batctl tg | grep W | wc -l    batctl tg | grep W | wc -l
  
Zeile 290: Zeile 300:
      
 === Liste der lokalen Nutzer === === Liste der lokalen Nutzer ===
-Wollen wir eine Liste aller lokalen Nutzer sehen bemühen wir die Option **tl** beim Befehl ''batctl''+Wollen wir eine Liste aller lokalen Nutzer sehenbemühen wir die Option **tl** (translocal)
    batctl tl    batctl tl
 <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V), TTVN: 107] <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V), TTVN: 107]
Zeile 312: Zeile 322:
  
 === Belegung der Netzwerkports am Router === === Belegung der Netzwerkports am Router ===
-Möchte man abfragen welche Ports an dem Freifunkrouter belegt, also Ethernet-Kabel angesteckt wurden, kann man dies wie folgt ermitteln.+Möchte man abfragenwelche Ports an dem Freifunkrouter belegt, also Ethernet-Kabel angesteckt wurden, kann man dies wie folgt ermitteln.
    swconfig dev switch0 show | grep 'link:'    swconfig dev switch0 show | grep 'link:'
 <code> link: port:0 link:up speed:1000baseT full-duplex txflow rxflow  <code> link: port:0 link:up speed:1000baseT full-duplex txflow rxflow 
Zeile 333: Zeile 343:
 </code> </code>
 Damit werden Daten aus gluon-neighbour-info direkt dem Heimautomatisierungs-System (z.B. [[http://www.openhab.org|OpenHAB]], [[http://fhem.de|FHEM]]) als JSON zur Verfügung gestellt.  Damit werden Daten aus gluon-neighbour-info direkt dem Heimautomatisierungs-System (z.B. [[http://www.openhab.org|OpenHAB]], [[http://fhem.de|FHEM]]) als JSON zur Verfügung gestellt. 
-Interessiert man sich dabei nur für die Anzahl eingebuchter Clients, geht die letzte Zeile dieses Skripts auch einfacher mit Hilfe des oben beschriebenen ''**batctl**''-Befehls:+Interessiert man sich dabei nur für die Anzahl lokaler WLAN-Clients, geht die letzte Zeile dieses Skripts auch einfacher mit Hilfe des oben beschriebenen ''**batctl**''-Befehls:
 <code> <code>
 mosquitto_pub -h localhost -t ffmuc/$ffroutername/clients -m `ssh root@$ffrouterip batctl tl | grep W | wc -l` mosquitto_pub -h localhost -t ffmuc/$ffroutername/clients -m `ssh root@$ffrouterip batctl tl | grep W | wc -l`
  • knb/ssh.txt
  • Zuletzt geändert: 2024/02/26 10:21
  • von grische