sudo einrichten auf CentOS / Ubuntu / OpenSUSE
sudo einrichten auf CentOS / Ubuntu / OpenSUSE: How-to:
Es gibt drei Methoden, um einen Benutzer für sudo zu konfigurieren:
Methode 1: Über das Verzeichnis /etc/sudoers.d:
Melden Sie sich als root an und erstellen Sie eine neue Datei im Verzeichnis /etc/sudoers.d, normalerweise mit dem gleichen Namen wie der Benutzer, mit folgendem Inhalt:
1 |
benutzername ALL=(ALL) ALL |
Im folgenden Beispiel kann der Benutzer mazhar jeden Befehl von überall her ausführen
1 2 3 |
# vi /etc/sudoers.d/mazhar mazhar ALL=(ALL) ALL |
Die richtigen Berechtigungen für die Datei festlegen
1 |
# chmod 400 /etc/sudoers.d/mazhar |
Methode 2: Den gleichen Inhalt am Ende der Datei /etc/sudoers hinzufügen
Die Datei /etc/sudoers muss mit dem Befehl „visudo“ bearbeitet werden:
1 2 3 |
# visudo mazhar ALL=(ALL) ALL |
Methode 3. Den Benutzer zu einer Gruppe hinzufügen, die bereits über sudo-Berechtigungen verfügt
CentOS / OpenSUSE:
1 |
# usermod -aG wheel mazhar |
Ubuntu:
1 |
# usermod -aG sudo mazhar |
Melden Sie sich mit dem Benutzer an und testen Sie das sudo
1 2 3 4 5 |
[mazhar@centosserver ~]$ sudo ls -l /usr/src/ [sudo] password for mazhar: total 0 drwxr-xr-x. 2 root root 6 Apr 11 2018 debug drwxr-xr-x. 2 root root 6 Apr 11 2018 kernels |
Ich empfehle noch eine weitere Einstellung, da man sonst möglicherweise den vollständigen Pfad für die ausführbaren Dateien (Executables) angeben muss. Der Grund dafür ist, dass der Befehl „sudo“ den Pfad des Benutzers erbt und nicht den des root.
Fügen Sie Folgendes zur .bashrc -Datei in Ihrem Home-Verzeichnis hinzu:
1 |
PATH=$PATH:/usr/sbin:/sbin |
Diese Einstellungen werden nach dem erneuten Einloggen wirksam.
Anmerkung: ALL=(ALL) ALL, Was bedeutet das?
ALL= Auf allen Hosts (Wenn viele Computer die gleiche sudoer-Datei verwenden)
(ALL) = Als beliebiger Zielbenutzer
ALL = Kann jeden beliebigen Befehl ausführen
Man kann die für einen Benutzer erlaubten Berechtigungen auch einschränken. Lesen Sie dazu die Datei /etc/sudoers, die sehr gut selbst dokumentiert ist.
SSH Public Key Authentifizierung mit Putty: How-to
How-to: SSH Public Key Authentifizierung mit Putty auf dem Windows Rechner
Für das „How-to“ SSH Public Key Authentifizierung auf dem Linux-Server und dem Linux-Client klicken Sie hier
Die Anweisungen sind für die drei wichtigsten Linux-Distributionsfamilien – Redhat/Fedora (CentOS), SUSE (OpenSUSE) und Debian (Ubuntu) – gleich:
Verwendete Programme bzw. Befehle:
puttygen.exe: Zur Generierung des RSA-Schlüssels
pageant.exe: Zur Zwischenspeicherung des privaten Schlüssels, um die Verwendung des privaten Schlüssels zu erleichtern
putty.exe: SSH-Client
Schritt 1: Den Remoteserver vorbereiten
-
Öffnen Sie die Datei /etc/ssh/ssh/sshd_config und überprüfen Sie folgende Parameter:
1 2 3 4 |
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes |
Der Parameter PasswordAuthentication kann auf „no“ gesetzt werden, nachdem die Keybased Authentifizierung eingerichtet und erfolgreich getestet wurde.
-
Setzen Sie die entsprechenden Dateizugriffsrechte:
1 2 |
$ chmod 700 $HOME/.ssh $ chmod 600 $HOME/.ssh/authorized_keys |
Das ist erforderlich, wenn in /etc/ssh/ssh/sshd_config der Parameter StrictModes auf yes gesetzt ist. Dieser Parameter wird verwendet, um festzulegen, ob sshd die Berechtigungen des Home -Verzeichnisses überprüfen soll, bevor die SSH-Verbindung akzeptiert wird.
-
Wenn SELinux aktiviert ist, stellen Sie die standardmäßigen SELinux-Kontexte wieder her:
1 |
$ restorecon -R &HOME/.ssh |
-
Starten Sie den sshd-Dienst neu:
1 |
$ sudo systemctl restart sshd.service |
Schritt 2 (auf demWindows Rechner): Den Key Generator „puttygen.exe“ von https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html herunterladen und ausführen
Schritt 3: Public und Private Keys mit puttygen erzeugen
-
Bewegen Sie die Maus über das App-Fenster, um die Keys zu generieren
-
Nachdem die Keys generiert wurden, kopieren Sie den Public Key im open-ssh-Format
Schritt 4: Den Public Key manuell zur Liste der autorisierten Keys auf dem Remote-Server hinzugefügen
-
Melden Sie sich dazu auf dem Remote-Server an und fügen Sie den Public Key hinzu Datei $HOME/.ssh/authorized_keys.
1 |
$ mkdir $HOME/.ssh |
-
Ändern der Dateiberechtigungen des .ssh Ordner auf 700. Ansonsten werden die Keys abgelehnt
1 |
$ chmod 700 $HOME/.ssh |
1 |
$ vi $HOME/.ssh/authorized_keys |
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAsr81+lxOaGatHxuyZzkvPQ4xPEAx2lF69u5zUktd1Q6Xe9QOFqKRifaoB1dEWxfSxwsms9XUti8EftK5EvQ6JpoyS87bmLSrnK4tSsFKC/tOXEutohF2wterAgOMM85LDW6eF8wLtZ1R2bj03kl+jNkxRzmeFYYbuK4NTATT12ZuHlCwpnYMzqb/zsuYXRL7dt/KS9Fqsh6LUYm4u3OrCH7mQMsDEDsKdKtBMdqXAWNTR4efKGkzb2ZSG9hVWaNw0g2Ho2uepPnIERvEaEL5Qd9IAXjek1ThwNWSoP2uTn/4tf1ItCJxXLsk6D6uE+Q4gEdlnJGBbVfhGVl6Jh5vkw== rsa-key-20181230 |
-
Ändern der Dateiberechtigungen der authorized_keys auf 600. Ansonsten werden die Keys abgelehnt
1 |
$ chmod 600 $HOME/.ssh/authorized_keys |
Schritt 5: Auf dem keygen -Tool eine Passphrase für den Privaten Key eingeben und die Public und Private Keys auf dem Windows Rechner speichern
Anmerkung:
Es ist nicht notwendig, eine Passphrase anzugeben. Ich empfehle jedoch dringend, eine Passphrase zu verwenden. Die Passphrase wird verwendet, um einen weiteren Key zu generieren, der den Privaten -Key an sich verschlüsselt. Dies ist eine zusätzliche Sicherheitsstufe. Falls der Private Key kompromittiert wird, kann er ohne die Passphrase nicht verwendet werden.
Schritt 6: einen neuen SSH Host einrichten
Öffnen Sie den Putty und richten Sie einen neuen SSH-Host ein:
- Geben Sie den Benutzer, den Host und den Port an
- Geben Sie unter Connection > SSH > Auth den Pfad für den Private Key an
- Speichern Sie die Konfiguration
Schritt 7: die Schlüssel-basierte Authentifizierung auf Funktionstüchtigkeit überprüfen
Öffnen Sie eine ssh-Sitzung mit dem Remote-Server mit der gespeicherten Konfiguration:
Anmerkung: Wenn ich keine Passphrase verwendet hätte, wäre ich direkt angemeldet gewesen, ohne nach der Passphrase gefragt zu werden
Schritt 8: die Passwort-Authentifizierung auf dem Remote-Server deaktivieren (dringend empfohlen)
Öffnen Sie die Datei /etc/ssh/ssh/sshd_config und überprüfen Sie folgende Parameter:
1 |
PasswordAuthentication no |
Sie möchten nicht bei jedem Login die Passphrase eingeben müssen? Verwenden Sie den Putty SSH-AGENT.
Putty SSH-AGENT:
Wenn man die Passphrase nicht jedes Mal eingeben möchte, kann man den putty ssh-agent zur Verwaltung der privaten Schlüssel und Passphrasen verwenden. Dafür:
- Den Putty ssh-agent “ exe “ von https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html herunterladen und ausführen
- Klicken Sie auf „Add Key“, wählen Sie den Privaten Key und geben Sie bei Aufforderung die Passphrase ein.
- Klicken Sie anschließend auf „Close“
- Nun läuft der ssh-agent im Hintergrund. In Putty selbst muss man den Privaten Key nicht mehr angeben. Stellen Sie jedoch sicher, dass im Putty der Haken “ Attempt authentication using Pagent“ gesetzt ist
Das war’s!
SSH Key-Basierte Authentifizierung Linux Client: How-to
How-to: SSH Key-Basierte Authentifizierung auf dem Linux-Server und dem Linux-Client
Für die SSH Key-Basierte Authentifizierung mit Putty klicken Sie hier
Die Anweisungen sind für die drei wichtigsten Linux-Distributionsfamilien – Redhat/Fedora (CentOS), SUSE (OpenSUSE) und Debian (Ubuntu) – gleich:
Verwendete Programme bzw. Befehle:
ssh-keygen: Zur Generierung des RSA-Schlüssels
ssh-agent: Zur Zwischenspeicherung des privaten Schlüssels, um die Verwendung des privaten Schlüssels zu erleichtern
ssh-copy-id: Zum Kopieren des öffentlichen Schlüssels auf dem Remote-Server Schritt 1: Den Remoteserver vorbereiten
Schritt 1: Den Remoteserver vorbereiten
-
Öffnen Sie die Datei /etc/ssh/ssh/sshd_config und überprüfen Sie folgende Parameter:
1 2 3 4 |
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes |
Der Parameter PasswordAuthentication kann auf „no“ gesetzt werden, nachdem die Keybased Authentifizierung eingerichtet und erfolgreich getestet wurde.
-
Setzen Sie die entsprechenden Dateizugriffsrechte:
1 2 |
$ chmod 700 $HOME/.ssh $ chmod 600 $HOME/.ssh/authorized_keys |
Das ist erforderlich, wenn in /etc/ssh/ssh/sshd_config der Parameter StrictModes auf yes gesetzt ist. Dieser Parameter wird verwendet, um festzulegen, ob sshd die Berechtigungen des Home -Verzeichnisses überprüfen soll, bevor die SSH-Verbindung akzeptiert wird.
-
Wenn SELinux aktiviert ist, stellen Sie die standardmäßigen SELinux-Kontexte wieder her:
1 |
$ restorecon -R &HOME/.ssh |
-
Starten Sie den sshd-Dienst neu:
1 |
$ sudo systemctl restart sshd.service |
Schritt 2: Public und Private Keys erzeugen (auf dem Client Rechner)
-
Geben Sie den Typ, die Länge, den Namen und den Pfad der Keys ein. Wenn Sie eine Passphrase verwenden möchten, geben Sie diese ein. Andernfalls drücken Sie einfach die Enter-Taste
Anmerkung:
Es ist nicht notwendig, eine Passphrase anzugeben. Ich empfehle jedoch dringend, eine Passphrase zu verwenden. Dies ist eine zusätzliche Sicherheitsstufe. Falls der Private Key kompromittiert wird, kann er ohne die Passphrase nicht mehr verwendet werden.
Im folgenden Beispiel werde ich einen 2048-Bit-RSA-Schlüssel mit Standardnamen und Pfad erzeugen. Der Standardpfad lautet $HOME/.ssh.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$ ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/mazhar/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/mazhar/.ssh/id_rsa. Your public key has been saved in /home/mazhar/.ssh/id_rsa.pub. The key fingerprint is: 2c:f9:cd:56:9e:b6:72:34:c7:50:b2:39:0a:a9:ee:59 mazhar@centos7.homenetwork.maz The key's randomart image is: +--[ RSA 2048]----+ | | | . . | | . = | | oo = | | o.S. ..+ | | .o o.oo.o | | . E +.+o | | .o ..... | | .o o. | +-----------------+ |
Im obigen Beispiel ist id_rsa der Private Schlüssel (Private Key) und id_rsa.pub der öffentliche Schlüssel (Public Key).
Schritt 3: Den Public Key (id_rsa.pub) zur Liste der autorisierten Keys auf dem Remote-Server hinzufügen
-
Standardmäßig werden die autorisierten Keys in &HOME/.ssh/authorized_keys gespeichert. Wenn die Datei &HOME/.ssh/authorized_keys auf dem Remote-Server nicht existiert, erstellen Sie sie.
-
Sie können den öffentlichen Schlüssel manuell oder mit dem Befehl ssh-copy-id kopieren. Nachfolgend ist das Beispiel ssh-copy-id aufgeführt:
1 2 3 4 5 6 7 8 9 |
$ ssh-copy-id mazhar@192.168.2.109 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys mazhar@192.168.2.109's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'mazhar@192.168.2.109'" and check to make sure that only the key(s) you wanted were added. |
Schritt 4: Den ssh-agent starten und den privaten Schlüssel zum SSH -Agent hinzufügen
1 2 |
$ eval $(ssh-agent) Agent pid 7220 |
1 2 3 |
$ ssh-add $HOME/.ssh/id_rsa Enter passphrase for /home/mazhar/.ssh/id_rsa: Identity added: /home/mazhar/.ssh/id_rsa (/home/mazhar/.ssh/id_rsa) |
Anmerkung: Wieso „eval“?
Wenn man nur ssh-agent eintippt, gibt das Programm die Umgebungsvariablen aus, die für die Verbindung mit dem ssh-agent erforderlich sind. z.B.
1 2 3 4 |
$ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-POflfAnDHuyb/agent.16266; export SSH_AUTH_SOCK; SSH_AGENT_PID=16267; export SSH_AGENT_PID; echo Agent pid 16267; |
Durch den Aufruf von „eval“ werden diese Umgebungsvariablen sofort in die Umgebung geladen.
Schritt 5: Schlüssel-basierte Authentifizierung auf Funktionstüchtigkeit überprüfen
1 2 3 4 |
ssh mazhar@192.168.2.109 Enter passphrase for key '/home/mazhar/.ssh/id_rsa': Last login: Wed Dec 26 15:49:24 2018 from homecentos7 [mazhar@centos7 ~]$ |
Anmerkung: Wenn ich keine Passphrase verwendet hätte, wäre ich direkt angemeldet gewesen, ohne nach der Passphrase gefragt zu werden.
Schritt 6: die Passwort-Authentifizierung auf dem Remote-Server deaktivieren (dringend empfohlen)
Öffnen Sie die Datei /etc/ssh/ssh/sshd_config und überprüfen Sie folgende Parameter:
1 |
PasswordAuthentication no |