Client-Konfiguration
Installieren ~/.ssh/config
Das Einrichten von Host-Einträgen für ssh
ist sehr einfach und erspart Ihnen viel Ärger. Hier ist ein Beispiel:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
In diesem Beispiel richten wir digitaloceanbox
und eingithub
und github.com
so , dass wir die folgenden Befehle tun können:
ssh github
ssh digitaloceanbox
Wenn wir uns als ein anderer Benutzer als der in der Konfigurationsdatei angegebene anmelden möchten, setzen wir einfach user@
am Anfang:
Generieren von ssh
Schlüsseln
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Beachten Sie, dass ich den vollständigen Pfad des privaten Schlüssels angegeben habe, den ich generieren möchte, wenn ich dazu aufgefordert werde ssh-keygen
. Ich habe auch comment ( -C
) definiert, mit dem ich Schlüssel auf Remote-Rechnern leicht identifizieren kann.
Dadurch werden zwei Dateien erstellt:
.ssh/digitalocean-rsa
- PRIVATER SCHLÜSSEL . Teile das niemals .
.ssh/digitalocean-rsa.pub
- Öffentlicher Schlüssel. Dies ist, was Sie auf dem Server speichern, um sich zu authentifizieren.
Wenn Sie Ihren ssh
Schlüssel bereitstellen , vergewissern Sie sich, dass es der ist.pub
Version handelt !! Wenn Sie zu Ihrem hinzufügen~/.ssh/config
darauf, den richtigen privaten Schlüssel hinzuzufügen, der dem öffentlichen Schlüssel entspricht, den Sie dem System hinzugefügt haben.
Serverkonfiguration
Bei den meisten Installationen ist die Authentifizierung mit öffentlichem Schlüssel aktiviert. Wenn Sie anfangen, alles gut oder schlecht zu machen, könnten Sie jedoch auf ein paar Probleme stoßen. An der Stelle, an der sich das OP in ihrem Problem befindet, empfehle ich, das OP zu löschen/root/.ssh/
Verzeichnis , um von zu beginnen.
Es wird nicht empfohlen, ssh
auf den Root-Benutzer des Remote-Systems zuzugreifen. Es wird empfohlen, dass Siessh
bei einem anderen Benutzer anmelden und dann mit Ihrem Kennwort ( sudo su -
) zu root eskalieren .
Fügen Sie dem Host Schlüssel hinzu, indem Sie verwenden ssh-copy-id
Unabhängig davon, ob Sie einen anderen Benutzer erstellen und ssh
als dieser Benutzer oder als Rootbenutzer verwenden möchten, wird die folgende Methode zum Platzieren von ssh
Schlüsseln auf einem Server empfohlen :
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Auf diese Weise können Sie sshd
das Verzeichnis und die Dateien mit den erforderlichen Berechtigungen erstellen. Dies bedeutet, dass Sie keine Chance haben, Berechtigungen zu verfälschen oder sich die Details zu merken. Verwenden Sie einfach das Tool, um die Schlüssel hochzuladen.
Deaktivieren Sie die Kennwortauthentifizierung
Allerdings wird empfohlen, die Kennwortauthentifizierung in zu deaktivieren sshd
und den Dienst neu zu starten , sobald Sie den Schlüssel selbst erstellt und überprüft haben, dass Sie eine Verbindung mit den Schlüsseln herstellen können :
- Bearbeiten
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Was ist mit neuen Benutzern?
Wie können Sie neue Benutzer eingeben, wenn Sie die Kennwortauthentifizierung deaktivieren? Eine Möglichkeit besteht darin, Vorlagendateien zum /etc/skel
Verzeichnis hinzuzufügen . Wenn Sie einen Benutzer eingegeben haben, gehen Sie wie folgt vor:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Bearbeiten Sie alle darin gefundenen Dateien
/etc/skel/.ssh/
so, dass sie leer sind, es sei denn, Sie möchten sich automatisch für jeden neu erstellten Benutzer eingeben.
Wenn Sie neue Benutzer mit erstellen sudo useradd -m newuser
, hat dieser Benutzer .ssh/authorized_keys
die Berechtigung, die Sie bearbeiten können, und verfügt über die entsprechenden Berechtigungen.
Debuggen
In der sshd
Protokolldatei können Sie nachlesen, warum Verbindungen fehlschlagen oder abgelehnt werden:
sudo tail -f /var/log/auth.log
Verwenden Sie während der Ausführung dieses Befehls ein anderes Terminal, um eine Anmeldung zu versuchen. Oft sind die bereitgestellten Nachrichten gut genug, um das Problem zu lokalisieren oder online eine Lösung zu finden.