Kurze Anleitung wie man ganz einfach einen Yubikey 4 für SSH verwendet.
Die Anleitung zielt nicht auf absolute Sicherheit ... wer Bedenken hat sollte folgende Dinge zusätzlich machen:
- offline Live-System verwenden und danach löschen
- management-Key setzen
- PINs anpassen
- den Key auf dem Sicherungs-Datenträger zusätzlich verschlüsseln
- Passphares beim SSH-Key
- den Key direkt auf den Stick erstellen (keine Backup-Möglichkeit)
Pakete installieren
sudo apt-get install yubikey-personalization yubico-piv-tool opensc pcscd
SSH-Key erstellen
Stick auf PGP umstellen:
ykpersonalize -m82
Temporäres Verzeichnis für die Schlüssel:
mkdir ~/tmp_key cd ~/tmp_key
SSH-Key generieren:
ssh-keygen -t rsa -b 2048 -f id_rsa
Den Stick mit den Schlüssel füttern:
openssl rsa -in id_rsa -out id_rsa.pem -outform pem yubico-piv-tool -a import-key -s 9a -i id_rsa.pem rm id_rsa.pem
Den Stick mit den Zertifikaten füttern (PIN ggf. anpassen):
ssh-keygen -e -f id_rsa.pub -m PKCS8 > id_rsa.pub.pkcs8 yubico-piv-tool -a verify -P 123456 -a selfsign-certificate -s 9a -S "/CN=joe/O=Test/" -i id_rsa.pub.pkcs8 -o 9a-cert.pem yubico-piv-tool -a verify -P 123456 -a import-certificate -s 9a -i 9a-cert.pem
Schauen ob alles geklappt hat:
yubico-piv-tool -a status
Die Datei "id_rsa.pub" können wir behalten, diese brauchen wir später noch.Die Dateien "id_rsa" und "id_rsa.pub" am besten auf einer Speicherkarte oder Stick speichern und sicher verwahren.Das löschen des Verzeichnis "tmp_key" auf den PC nicht vergessen:
rm -rf ~/tmp_key
SSH-Key erstellen für Paranoide
Diese Variante bietet kein Backup vom Key!
Stick auf PGP umstellen:
ykpersonalize -m82
Temporäres Verzeichnis für die Schlüssel:
mkdir ~/tmp_key cd ~/tmp_key
Schlüssel direkt auf den Stick erstellen:
yubico-piv-tool -a generate --touch-policy=always -s 9a -o public.pem
Den Stick mit den Zertifikaten füttern (PIN ggf. anpassen):
yubico-piv-tool -a verify-pin -P 123456 -a selfsign-certificate -s 9a -S "/CN=SSH key/" -i public.pem -o cert.pem yubico-piv-tool -a import-certificate -s 9a -i cert.pem
Den Public-Key generieren:
export OPENSC=$(dpkg -L opensc-pkcs11 | grep \\/opensc-pkcs11.so\\$ | head -n1 ) ssh-keygen -D $OPENSC -e
SSH-Key Anwenden
SSH-Key auf den Zielsystem installieren:
ssh-copy-id -i id_rsa.pub holy_moly_server.de
SSH-Agent starten und den Stick als Quelle angeben:
export OPENSC=$(dpkg -L opensc-pkcs11 | grep \\/opensc-pkcs11.so\\$ | head -n1 ) eval `ssh-agent -s` ssh-add -s $OPENSC
Zum Zielsystem mit den Stick verbinden:
ssh -A holy_moly_server.de
Quellen
https://wikitech.wikimedia.org/wiki/Yubikey-SSH
http://blog.rchapman.org/posts/Import_an_existing_ssh_key_into_Yubikey_NEO_applet/
- Details
- Geschrieben von: Marcus
- Kategorie: SSH
Server
libpam: ab Debian 9
sudo apt-get install libpam-ssh-agent-auth
libpam: ältere Debian-Versionen
Aktuelle Version herunter laden: https://sourceforge.net/projects/pamsshagentauth/
sudo apt-get install libpam0g-dev libssl-dev tar -xf pam_ssh_agent_auth-0.10.3.tar.bz2 cd pam_ssh_agent_auth-0.10.3 ./configure --libexecdir=/lib/security --with-mantype=man make sudo make install
Konfiguration
/etc/sudoers:
Defaults env_keep += SSH_AUTH_SOCK
/etc/pam.d/sudo:
#auth sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys auth sufficient pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys{{{ sudo cp ~/.ssh/authorized_keys /etc/ssh/sudo_authorized_keys sudo chown root:root /etc/ssh/sudo_authorized_keys }}}
Client
{{{ eval `ssh-agent -s` ssh-add ~/.ssh/my_damn_key/id_rsa ssh -A holy_moly_server.de sudo ls }}}- Details
- Geschrieben von: Marcus
- Kategorie: SSH
In dieser Anleitung wird beschrieben, wie du ein Schlüsselpaar unter Mac OSX erstellst, was geeignet ist um SSH Zugang zu deinem Router zu bekommen. OSX bringt alle Bordmittel mit um dies zu bewerkstelligen, du brauchst also nichts zusätzlich installieren.
Kurzer Hinweis vornan
Du erzeugst mit dieser Anleitung einen öffentlichem und einen privaten RSA-Schlüssel. Der öffentliche Schlüssel kann verbreitet werden, wie beispielsweise auf deinem Freifunk-Router hinterlegt werden. Der private Schlüssel sollte geheim bleiben und nicht weiterverbreitet werden. Dieser Schlüssel sollte deshalb nicht bei online-Diensten hinterlegt werden oder über diese auf andere Geräte synchronisiert werden - Es ist dein persönliches Ausweisdokument. Beide Schlüssel bilden ein Schlüsselpaar.
Generierung des Schlüsselpaars
Zur Generierung des Schlüsselpaars benötigst du wie bereits beschrieben keine weitere Software, das Mac OSX die benötigten Komponenten bereits mitbringt. Das Terminal wird im kommenden für alles ausreichen. Starte dieses indem du Die Taste CMD+Leertaste drückst. Es erscheint die Spotlight-Suche. Gib in dieses Overlay Terminal ein und bestätige mit der Eingabetaste. Das Programm Terminal öffnet sich.
Wechsel nun als erstes in das Verzeichnis, in dem standardmäßig die persönlichen SSH-Dateien liegen. dies ist das versteckte Verzeichnis .ssh in deinem persönlichen Ordner. Gib dazu im Terminal folgenden Befehl ein:
cd ~/.ssh
Sollte der Verzeichniswechsel fehlschlagen, ist das Verzeichnis noch nicht existent und du musst es erst anlegen. Sollte das der Fall ein lege das Verzeichnis mit dem Befehl mkdir ~/.ssh an.
im Verzeichnis .ssh angekommen kannst du nun bereits den Schlüssel anlegen. Gib dazu in das Terminalfenster folgenden Befehl ein:
ssh-keygen -t rsa -b 8192
Es wird damit ein Schlüssel generiert (ssh-keygen), der den Typ RSA hat (-t rsa) und die Länge 8192 Bit besitzt (-b 8192).
Du wirst nun gefragt, wie das generierte Schlüsselpaar heißen soll und wie das Passwort für den Schlüssel sein soll. Bitte gib beides an.
Ist der Vorgang abgeschlossen kannst du in dein Terminalfenster ls -a eingeben und du wirst sehen, dass nun zwei Dateien dort zu finden sind, die den eben eingegebenen Namen tragen - das ist dein Schlüsselpaar. Einer der beiden Schlüssel trägt die Endung .pub, was dein öffentlicher Schlüssel ist, der im Router hinterlegt werden kann, der andere ist dein privater Schlüssel, der mit dem oben angegebenen Passwort geschützt ist. Fertig
Weiterarbeit mit dem Schlüssel
Den Inhalt des öffentlichen Schlüssels kannst du sehen indem du cat deinschluesselname.pub eingibst. Das Ergebnis sollte folgender Form folgen:
ssh-rsa LaNgEZeiCHEenKetteAuskleinenundGROSSENBuchStabENUndZahLEn2237682t43== IrgendeinNameDerDeinenComputerBeschreibt
Diese gesamte Zeichenkette kannst du nun im Router hinterlegen und hast damit einen SSH-Zugang zu diesem eingerichtet. Dazu setzt du deinen Router in den Konfigurationsmodus indem du die Reset-Taste ein paar Sekunden lang gedrückt hältst. Der Router startet damit neu und direkt in den Konfigurationsmodus. Verbinde deinen Mac über Ethernet (Netzwerkkabel) mit (einer) der LAN-Buchse(n) des Routers.
Gib nun im Browser die Adresse 192.168.1.1 ein. Nun öffnet sich die Konfigurationsoberfläche des Routers und du klickst oben rechts auf 'Expert Mode' und dann wählst du dort 'Remote Access' bzw. 'Remotezugriff' aus.
Jetzt kannst du den oben angezeigten öffentlichen Schlüssel in der Liste der SSH-Schlüssel in einer neuen Zeile ergänzen.
Bestätige nun mit 'Submit' bzw. 'Absenden', wechsele in der obigen freifunkmagentafarbenen Leiste in 'Wizard' und starte das Gerät neu.
Sehr einfach erreichst du nun deinen Router indem du eine SSH-Config anlegst - das wird dir das Leben deutlich erleichtern. Wie du diese ähnlich schnell wie den Schlüssel anlegst zeigt dir die Anleitung zum Anlegen einer SSH-Config unter OSX in unserem Wiki. Weil du schonmal im .ssh-Ordner bist, das so schnell geht und so nützlich ist, wird an dieser Stelle auch nicht darauf eingegangen, wie du den Router ohne SSH-Config erreichen kannst. Leg dir diese Config einfach an, spare Schreibarbeit und werde glücklich damit.
- Details
- Geschrieben von: Eric
- Kategorie: SSH
Im Folgenden werde ich dir in einer kurzen Einführung zeigen, wie man eine ssh-Konfiguration anlegt. Mit dieser ist es anschließend über kurze Befehle möglich sich auf seinem Freifunk-Knoten anzumelden. Voraussetzung dieser Anleitung ist, dass du deinen Router zu einem Freifunk-Router aufgewertet hast und dort deinen öffentlichen SSH-Schlüssel bereits hinterlegt hast. Entsprechend hast du also auch schon ein Public-Privat-Schlüsselpaar generiert, welches du benutzt.
Die Schlüssel- und Konfigurationsorte
Unter OSX ist das Standardverzeichnis in dem die ssh-Schlüssel aufbewahrt werden das versteckte Verzeichnis .ssh im Homeverzeichnis. Du kannst dieses im Finder erreichen indem du Shift + cmd + G drückst und in das Popup-Fenster ~~/.ssh einträgst und bestätigst. Du siehst in diesem Ordner nun deinen öffentlichen und privaten Schlüssel. In meinem Fall habe ich meinen öffentlichen Schlüssel mit der Endung .pub versehen, der Privatschlüssel hat keine Dateiendung
Möglicherweise befindet sich dort eine Datei namens config, falls nicht lege diese bitte an. Am einfachsten geht das mit dem Terminal-Programm deiner Wahl (bspw. Terminal oder iTerm). Öffne dieses und gebe folgende Zeile ein:
cd ~/.ssh touch config
Damit ist die config-Datei angelegt und kann nun mit Inhalt gefüllt werden. Ein Eintrag in der Config kann aus vielen Einzelteilen bestehen.
Inhalte der SSH-Config
In meinem einfachen Beispiel gebe ich dem Eintrag lediglich
- Eine Kommentarzeile (beginnend mit #) in der der Knoten näher beschrieben wird. Diese ist besonders hilfreich, wenn sich die Einträge häufen.
- Einen kurzen eindeutigen Namen, den man später aufrufen kann (beginnend mit Host)
- Einen Nutzernamen mit dem man sich am Knoten anmeldet (User)
- Der Adresse unter dem ich den Knoten erreichen kann (hier HostName mit der freifunk-internen IPv6-Adresse, Die Adresse eines Knotens kannst du auf unserer Karte nachsehen. Wählt man einen Knoten aus und nimmt man entweder die freifunkinterne Adresse, welche mit fdb5 beginnt oder die externe, die mit 2a03 beginnt)
- Dem Port, der per default auf 22 ist und
- Dem Ort des privaten Schlüssels (IdentityFile)
Also öffne die die config File und trage die folgenden Zeilen (aber mit deinem eigenen Host, HostName und IdentityFile) ein. Gib dazu folgende Zeile in dein Terminal-Programm ein:
vi config
Nun kannst du durch drücken der Taste i in den Editiermodus wechseln und deine angepassten Zeilen einfügen. Achte darauf, dass die Einrückungen ab Zeile 3 erhalten bleiben.
# Freifunk-Node m4r10-refugee-support Host ffrs User root HostName fdb5:78b:64cc:0:e695:6eff:fe40:85b3 Port 22 IdentityFile ~/.ssh/private-key-to-identify
Mit :wq und anschließender Bestätigung wird die Datei gespeichert und geschlossen. Du befindest dich wieder im Terminalfenster.
Nutzung im Terminal
Nun sind die Eingaben bereits nutzbar. Du kannst deinen Knoten ab sofort nicht nur unter deiner bisherigen Langfassung aufrufen, sondern auch unter dem kurzen Aufruf. Im Beispiel ist der Aufruf des Knotens über den Befehl ssh gefolgt vom Host möglich:
ssh ffrs
Der Befehl ist ab jetzt in jedem Terminal-Programm verfügbar. Solltest du also mal dein Terminal aus irgendeinem Grund wechseln wollen oder müssen, brauchst du die Prozedur nicht noch einmal durchführen, sondern kannst die kurzaufrufe weiterhin nutzen.
Wenn das noch nicht reicht
Natürlich hören die Möglichkeiten der ssh-Config hier noch lange nicht auf. Du kannst noch viel mehr damit tun. Informiere dich darüber doch einfach auf deinem eigenen Mac oder Linux-Rechner, denn alles was du brauchst ist bereits mit an Bord - so auch die man-Page. Gib dazu einfach in dein Terminalfenster ein:
man ssh_config
Viel Spaß mit den Möglichkeiten.
- Details
- Geschrieben von: Eric
- Kategorie: SSH
Einleitung
In dieser Anleitung wird Folgendes beschrieben:
- RSA-Key unter Windows erstellen,
- RSA-Key auf dem Freifunk-Router hinterlegen
- Verbindung zum Router unter Verwendung des RSA-Key
Grundlegende Kenntnisse über den Aufbau einer Verbindung zu einem SSH-Server über den SSH-Client Putty werden vorausgesetzt und an dieser Stelle nicht erörtert.
Ferner muss an dieser Stelle nach öffentlichem und privatem RSA-Schlüssel unterschieden werden. Der öffentliche Schlüssel kann verbreitet werden und gleicht einer Visitenkarte die an andere Leute verteilt wird. Der private Schlüssel sollte geheim bleiben und nicht weiterverbreitet werden. Er gleicht einem Ausweisdokument welches zur Visitenkarte passt. Beide Schlüssel bilden ein Schlüsselpaar.
Vorarbeiten
Für Erstellung der Schlüssel und Verbindung mit dem SSH-Server werden folgende Programme benötigt:
- PuTTY - als SSH-Client
- PuTTYgen - zum Erzeugen der Schlüssel
- Pageant - zum automatischen Authentifizieren am SSH-Server
Diese Programme können unter folgendem Link einzeln oder im Komplettpaket heruntergeladen werden:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Anschließend bitte alle Anwendungen in den gleichen Ordner legen.
Schritt 1 - RSA-Schlüssel erstellen
Dazu wird das Programm PuTTYgen gestartet.
Die Standardeinstellungen "SSH-2 RSA" und "2048 bits" sind für uns gut geeignet.
Über den Button "Generate" wird ein Schlüsselpaar erzeugt. Das Programm wartet nun auf ein paar Mausbewegungen um eine gewisse Entropie zu erzeugen. Anschließend sollte der öffentliche RSA-Schlüssel bereits angezeigt werden.
In der großen Textbox steht bereits der öffentliche Schlüssel welcher später auf dem Freifunk-Router hinterlegt werden muss, daher kann dieser bereits vollständig markiert und in die Zwischenablage kopiert werden.
Im Feld "Key passphrase" sollte ein Kennwort hinterlegt werden welches bei der Verwendung des privaten Schlüssels abgefragt wird. Die Eingabe ist im nächsten Feld zu wiederholen.
Über die Schaltflächen "Save public key" & "Save private key" werden der öffentliche und der private RSA-Schlüssel für die spätere Verwendung exportiert. Beim Export des privaten Schlüssels ohne hinterlegtes Kennwort wird ein entsprechender Hinweis angezeigt.
Ferner kann bei Bedarf ein Schlüsselkommentar angegeben werden. Als Voreinstellung wird Schlüsseltyp und Generierungsdatum hinterlegt. Ein anderer Ansatz ist die Angabe wer den Schlüssel auf welchem System verwendet - "Max@Max-PC" als Beispiel.
Für unseren Fall ist es ausreichend den privaten Schlüssel über die entsprechende Schaltfläche zu speichern.
Schritt 2 - öffentlichen RSA-Schlüssel auf dem Router hinterlegen
Der öffentliche Schlüssel ist bereits in der Zwischenablage. Nun sollte die Config-Seite des Routers aufgerufen werden auf dem der eben erzeugte öffentliche Schlüssel hinterlegt werden soll. Den Config-Modus erreicht man durch 5s langes Drücken des WPS/Reset-Knopfes am Router. Dieser startet neu und ist anschließend über die Adresse http://192.168.1.1 im Browser erreichbar - vorausgesetzt der Router ist über ein Netzwerkkabel mit dem PC verbunden.
Über "Expert Mode" --> "Remotezugriff" kann der öffentliche SSH-Schlüssel aus der Zwischenablage in eine separate Zeile eingefügt werden. Unter Umständen ist dort bereits ein Schlüssel hinterlegt. Über "Absenden" wird die Änderung im Router gespeichert.
Sollte der öffentliche Schlüssel an dieser Stelle nicht mehr in der Zwischenablage sein, so kann über das bereits verwendete Tool PuTTYgen die gespeicherte Schlüsseldatei "Privater-Schlüssel.ppk" geöffnet und der öffentliche RSA-Schlüssel wieder angezeigt werden.
Nun den Router kurz vom Stromnetz trennen um ihn wieder im normalen Modus zu starten.
Schritt 3 - Verbindung zum Router unter Verwendung des RSA-Key
Für den erfolgreichen Aufbau einer SSH-Verbindung zum entsprechenden Router sind 3 Dinge Voraussetzung:
- Die IP-Adresse des Routers
- Die Schlüsseldatei "Privater-Schlüssel.ppk"
- Der SSH-Benutzername des Routers
Ersteres lässt sich über den Meshviewer auf der Freifunkseite herausfinden. Unter https://www.freifunk-gera-greiz.de/meshviewer/ den eigenen Knoten suchen und in den Knotendetails die verlinkte IPv6-Adresse des Routers notieren.
Sofern man als Client mit dem betroffenen Router verbunden ist kann die IP auch über die URL http://nextnode.ffggrz angezeigt werden.
Hier ist die IP-Adresse gelistet. Dabei kann die mit "fe80:" beginnende Adresse ignoriert werden.
Anschließend wird die Anwendung PuTTY gestartet.
Im Feld "Hostname" wird die ermittelte IP hinterlegt und darauf geachtet, dass als Verbindungstyp "SSH" ausgewählt ist.
Auf der linken Seite unter "Connection" --> "Data" den SSH-Benutzername hinterlegen. Alternativ dazu kann im vorherigen Schritt der Hostname um den gewünschten Benutzernamen ergänzt werden - einfach die IP-Adresse des Routers im folgenden Format unter "Session" im Feld "Hostname" eingeben:
"root@fdb5:78b:64cc:0:32b5:c2ff:fe87:9ea8"
Anschließend unter "Connection" > "SSH" > "Auth" die private Schlüsseldatei "Privater-Schlüssel.ppk" hinterlegen.
Beim anschließenden Aufbau der Verbindung über die Schaltfläche "Open" wird das beim Export hinterlegte Zertifikatskennwort abgefragt.
Nach der Eingabe sollte die Begrüßungsseite des Routers angezeigt werden. Die Zeile "root@RC-Krummer-Weg-001c" gibt an, dass als Benutzer "root" auf den richtigen Router verbunden wurde.
- Details
- Geschrieben von: Eric
- Kategorie: SSH