Inhaltsverzeichnis
Oracle Linux 8 - SSH Key Anmeldung verwenden
Aufgabe:
Anmeldung per SSH Key Konfigurieren und bei Problemen debuggen
Normalerweise ist das Einrichten von einen SSH Key für die Anmeldung recht einfach. Wenn es dann nicht funktioniert wird es dann schwirig.
Siehe auch ⇒ Putty mit SSH Key's unter Windows verwenden
SSH Key einrichten
Schlüssel anlegen und verteilen:
ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/home/anton/.ssh/id_ed25519): Created directory '/home/anton/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/anton/.ssh/id_ed25519. Your public key has been saved in /home/anton/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:7DVOrlE4pow6HLE8bdwtz+fpIrPgLHkHZVBR/VNVJuA anton@guacamole01.pipperr.local The key's randomart image is: +--[ED25519 256]--+ | .oo.. ....=| | . .. .o | | . .E. | | . o. . o | | . = + .S = . | | = =oo+.B . | | . =o.o+o o | | =+..+ +o.. | | .+o..+.=+ | +----[SHA256]-----+ cd ~/.ssh ls -la -rw------- 1 anton anton 432 May 11 20:52 id_ed25519 -rw-r--r-- 1 anton anton 113 May 11 20:52 id_ed25519.pub
Hier mit dem ed25519 Algorithmus, mehr dazu unter https://en.wikipedia.org/wiki/EdDSA und https://blog.peterruppel.de/ed25519-for-ssh/
Alle in einem Schritt:
ssh-keygen -t ed25519 -N '' -q -f ~/.ssh/id_rsa
Um sich lokal selber verbinden zu können, eigenen Schlüssel speichern:
cat id_ed25519.pub >> authorized_keys
Rechte setzen:
chmod 700 .ssh chmod 600 .ssh/* chmod 644 .ssh/*.pub
Testen:
ssh -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no -l $USER localhost "echo check ssh connect"
Schlüssel auf den anderen Knoten kopieren
ssh-copy-id -i ~/.ssh/id_ed25519.pub anton@apex01
Dort per Password anmelden und auch dort die Rechte richtig setzen!
ssh anton@apex01 chmod 700 .ssh chmod 600 .ssh/* chmod 644 .ssh/*.pub
Rechte beachten!
Auf die richtigen Rechte auf dem .ssh Verzeichnis achten!
.ssh/ | 0700 | rwx—— |
.ssh/*.pub | 644 | rw-r–r– |
.ssh/* | 0600 | rw——- |
Wird der Schlüssel nicht verwendet liegt es meist an den falsch gesetzten Rechten!
Bei Fehlern debuggen
Auf dem Zielhost Log überwachten
Auf dem Ziel Host (Oracle Linux) das Login überwachen
tail -f /var/log/secure #Falls falsche Rechte achten: May 11 21:12:40 guacamole01 sshd[4934]: Authentication refused: bad ownership or modes for file /home/anton/.ssh/authorized_keys
Rechte richtig setzen bei „bad ownership or modes for file“ , siehe oben!
Anmelden testen
Kann sich der User überhaupt anmelden (mit Passwort!)
ssh -v anton@apex01.pipperr.local
Prüfen ob ssh Zugriff nicht eingeschränkt ist über den Parameter AllowUsers :
vi /etc/ssh grep AllowUsers * vi sshd_config .. AllowUsers root oracle ansiblesvc ..
Auch darauf achten das unter Oracle Linux 8 der Root User sich per Default nicht per SSH anmelden darf!
Anmelden debuggen
mit -vvv ssh Zugriff debuggen:
ssh -vvv anton@apex01.pipperr.local # wenn ok dann: debug3: send packet: type 50 debug2: we sent a publickey packet, wait for reply debug3: receive packet: type 60 # auf diese Ausgabe bei Fehlern achten! debug3: send packet: type 50 debug2: we sent a publickey packet, wait for reply debug3: receive packet: type 51
Auf den „debug2: we sent a publickey packet, wait for reply und dann debug3: receive packet: type 51“ achten! Dann stimmen die Rechte auf das .ssh Verzeichnis auf dem Zielhost nicht (siehe oben für die richtigen Rechte)!
Im Oracle Cluster die Schlüssel verteilen
als root, grid, oracle User auf den beiden Maschinen racdb01 und racdb02
#generate key on every node ssh-keygen -t rsa #self cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh racdb01 #key on 2 ssh racdb02 ssh-keygen -t rsa # Copy public key from one node to the other #2 to 1 ssh racdb02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #1 to 2 ssh racdb02 ssh racdb01 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #self cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh racdb02
Testen auf JEDEM Knoten mit:
ssh -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no -l $USER racdb01 "echo check ssh connect" ssh -o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no -l $USER racdb02 "echo check ssh connect"
In der MS Windows Powershell verwenden
In Windows 10 ist ssh etc. auch enthalten, d.h. es muss keine weitere Software installiert werden.
Über die Powershell:
PS C:\work> ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (C:\Users\gpipperr/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\gpipperr/.ssh/id_ed25519. Your public key has been saved in C:\Users\gpipperr/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:ER8WwGHuglJOciqNDkdddexxxxxxxTWyYS72w9ZEtag7hNmM gpipperr@saturn The key's randomart image is: +--[ED25519 256]--+ | .=o+. | | = o++ . | | .*+* +o.. | |.ooBX.+.o. | |*.=Eo=..S | |*++o* . | |+o. . | |.. | | | +----[SHA256]-----+ cd C:\Users\gpipperr/.ssh/ PS C:\Users\gpipperr\.ssh> ls Directory: C:\Users\gpipperr\.ssh Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 23.05.2023 16:23 411 id_ed25519 -a---- 23.05.2023 16:23 98 id_ed25519.pub -a---- 12.03.2018 08:57 899 known_hosts PS C:\Users\gpipperr\.ssh> Get-Content -Path $env:USERPROFILE\.ssh\id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTccccccxxxxxxxxxxxxxxxxxxxxud9 gpipperr@saturn
Den SSH Schlüssel auf den Linux Rechner übertragen über ein Login mit ssh über Schell mit normalen Passwort:
PS C:\Users\gpipperr\.ssh> ssh oracle@10.10.10.90 oracle@10.10.10.90's password: [oracle@apex01:.ssh ]$ vi authorized_keys # Öffentlichen Schlüssel von oben eintragen [oracle@apex01:.ssh ]$ exit
# neu anmelden PS C:\Users\gpipperr\.ssh> ssh oracle@10.10.10.90 Last login: Tue May 23 16:39:39 2023 from 10.10.10.1 [oracle@apex01:~ ]$