SSH-Mehrschlüsselkonfiguration


Vorwort

Wenn wir ein Warehouse von GitHub klonen, verwenden wir häufig das HTTPS-Protokoll. Darüber hinaus können wir auch das SSH-Protokoll verwenden. Wenn unser Client eine Verbindung zum Remote-Server herstellt, ist das SSH-Protokoll noch untrennbarer. Wenn wir mehrere Remote-Terminals verbinden müssen, müssen mehrere SSH-Schlüssel sinnvoll konfiguriert werden.


1. Was ist SSH?

Der vollständige Name von SSH lautet: Secure Shell . Dabei handelt es sich um ein verschlüsseltes Netzwerkübertragungsprotokoll, das die Verbindung zwischen dem Client und dem Server durch die Erstellung eines sicheren Tunnels im Netzwerk realisiert. SSH verwendet grundsätzlich eine symmetrische Verschlüsselung während der Datenübertragung , muss jedoch während der Identitätsprüfung eine asymmetrische Verschlüsselung verwenden, d. h . die Form eines Paares aus öffentlichem Schlüssel und privatem Schlüssel.


2. Tool zur Schlüsselgenerierung

Es muss ein SSH-Schlüsselpaar generiert werden ssh-keygen. Heutige Mainstream-Betriebssysteme wie Windows, Linux und macOS werden häufig im Voraus installiert.


3. Schlüsseltyp

SSH kann eine Vielzahl von Verschlüsselungsalgorithmen verwenden, um Schlüsselpaare zu generieren. Die am häufigsten von diesen Verschlüsselungsalgorithmen generierten Schlüsseltypen sind rsaund ed25519.

  • rsa: Der am häufigsten verwendete Public-Key-Verschlüsselungsalgorithmus, der weit verbreitet ist und gut unterstützt wird. Je mehr Schlüsselziffern vorhanden sind, desto besser ist die Sicherheit, aber die Leistung wird verringert. Die gebräuchlichsten sind RSA 2048 und RSA 4096 .

  • ed25519: Der vom elliptischen Kurvenalgorithmus generierte Schlüssel ist kurz, sicher und zuverlässig und weist eine hohe Leistung auf. Seine Sicherheit liegt zwischen RSA 2048 und RSA 4096, aber seine Leistung ist um ein Vielfaches höher. ( empfohlen )

ed25519 erfordert eine OpenSSH-Version größer als 6.5 (eine alte Version aus dem Jahr 2014), daher sollte es niemanden geben, dessen Clients und Server nicht zufrieden sind


4. Lokale Konfiguration

Das von ssh-keygen generierte Schlüsselpaar wird standardmäßig im Ordner des Home-Verzeichnisses (Windows, C:\Users\xxxLinux/macOS )~ gespeichert.ssh

1. Einzelschlüsselkonfiguration

Verwenden Sie ssh-keygenden Befehl , um einen zu erstellenden Schlüsseltyp auszuwählen

# 生成 RSA 2048 密钥
ssh-keygen -t rsa -b 2048 -C "[email protected]"

# 生成 RSA 4096 密钥
ssh-keygen -t rsa -b 4096 -C "[email protected]"

# 生成 ed25519 密钥
ssh-keygen -t ed25519 -C "[email protected]"
  • -t: Wählen Sie den Typ des generierten Schlüssels aus
  • -b: Legen Sie die Anzahl der Schlüsselziffern fest
  • -C: Schlüsselkommentar, hier müssen Sie ihn in Ihre eigene E-Mail-Adresse ändern

Nachdem Sie den obigen Befehl ausgeführt haben, werden Sie aufgefordert, den Schlüsselspeicherpfad festzulegen. Drücken Sie einfach Enterdie Standardtaste .

Dann werden Sie aufgefordert, ein Passwort festzulegen, und Sie können wählen, ob Sie es entsprechend Ihren Anforderungen festlegen möchten oder nicht ( Enterwenn es wurde asymmetrisch verschlüsselt und es ist kein großes Problem, wenn Sie es nicht festlegen). Sie können es nicht festlegen. Wenn Sie es festlegen, wird die Sicherheit verbessert, aber Sie müssen das Kennwort jedes Mal eingeben, wenn Sie eine Verbindung herstellen. Dies wird etwas mühsam sein.

Nehmen Sie als Beispiel den generierten Schlüssel ed25519. Nach dem Vorgang werden zwei Dateien, ein privater Schlüssel und ein öffentlicher Schlüssel, im .sshOrdner .id_ed25519id_ed25519.pub

Berechtigungseinstellungen

id_ed25519Unter Linux müssen Sie außerdem die Berechtigungen der privaten Schlüsseldatei ( ) festlegen, bevor sie verwendet werden kann:

chmod 600 ~/.ssh/id_ed25519

2. Konfiguration mit mehreren Tasten

Wenn Sie sowohl GitHub, Giteeals auch verwenden 阿里云, müssen Sie SSH-Schlüssel einrichten. Sie können allgemeine SSH-Anmeldeinformationen in die globale Konfigurationsdatei schreiben

Öffnen Sie ein Terminal und geben Sie ein

# 创建 .ssh 文件夹
mkdir -p ~/.ssh

# 进入 .ssh 文件夹
cd ~/.ssh

Die folgende Einführung dient als Beispiel für die Generierung des Schlüssels ed25519:

# 生成 GitHub 密钥
ssh-keygen -t ed25519 -f github_ed25519  -C "[email protected]"

# 生成 Gitee 密钥
ssh-keygen -t ed25519 -f gitee_ed25519  -C "[email protected]"

# 生成 阿里云 密钥
ssh-keygen -t ed25519 -f aliyun_ed25519  -C "[email protected]"
  • -f: Der Name des generierten Schlüssels, der von Ihnen selbst geändert werden kann

Erstellen Sie eine Datei ( ) configim Ordner .ssh~/.ssh/config

# ------------ 配置说明 ------------

# Host:别名,HostName:服务器域名或 IP 地址
# User:用户名
# Port:主机连接端口
# 例:在克隆 [email protected]:torvalds/linux.git 这个仓库时
# User 是 git,HostName 是 github.com
# IdentityFile:私钥路径

# ------------ 配置说明 ------------


# ------------ 具体配置 ------------

# GitHub
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_ed25519

# Gitee
Host gitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_ed25519

# Aliyun
Host my_aliyun
HostName xxx.xxx.xxx.xxx
User xxx
Port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/aliyun_ed25519

# ------------ 具体配置 ------------

Berechtigungseinstellungen

Unter configLinux xxx_ed25519müssen die Berechtigungen der Konfigurationsdatei und der privaten Schlüsseldatei () festgelegt werden, bevor sie verwendet werden können:

chmod 600 config github_ed25519 gitee_ed25519 aliyun_ed25519

5. Remote-Konfiguration

1.GitHub/Gitee

Melden Sie sich bei GitHub an und öffnen Sie es nacheinanderSettings => SSH and GPG keys => New SSH key

Fügen Sie dann den Inhalt des öffentlichen Schlüssels (denken Sie daran, der öffentliche Schlüssel zu sein) in die Vergangenheit ein

Testen Sie abschließend die Verbindung zu GitHub mit dem Befehl ssh

ssh -T [email protected]

Geben Sie yeseinfach . Wenn Sie einen Fehler machen, können Sie -Tanschließend -vParameter um die spezifische Fehlermeldung anzuzeigen

Die Add-Methoden von Gitee und GitHub sind ähnlich, daher werde ich nicht auf Details eingehen

2. Server

Suchen Sie ~/.ssh/authorized_keysdie Datei (erstellen Sie sie, falls sie nicht vorhanden ist), erstellen Sie eine neue Zeile, fügen Sie den Inhalt des lokalen öffentlichen Schlüssels ein (denken Sie daran, dass es sich um einen öffentlichen Schlüssel handelt) und legen Sie die Berechtigungen fest:

chmod 600 ~/.ssh/authorized_keys

Testen Sie die Verbindung, nehmen Sie 阿里云zum Beispiel :

# 使用 Host 别名
ssh my_aliyun

# 不使用 Host 别名
ssh [email protected]

おすすめ

転載: blog.csdn.net/yuhext/article/details/128767944