Ich bin beim Studium der SSH-Verbindung vom Plattformserver zum privaten Server mithilfe von EC2 gestolpert, daher werde ich sie zum ersten Mal als Beispiel veröffentlichen. [Referenzartikel](https://qiita.com/fgem28/items/2c068eab3b34336147fb#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%95%E3 % 81% 9B% E3% 81% A6% E3% 81% 84% E3% 81% 9F% E3% 81% A0% E3% 81% 84% E3% 81% 9F% E8% A8% 98% E4% BA Wie ich in% 8B) geschrieben habe, gibt es viele andere Artikel über Qiita. Bitte beziehen Sie sich auch darauf.
Ich möchte EC2 in jedem öffentlichen und privaten Subnetz erstellen, die in derselben AZ erstellt wurden, und die Verbindung zum privaten Server so konfigurieren, dass der öffentliche Server als Sprungbrett verwendet wird.
Legen Sie die Standard- und SSH-Berechtigungssicherheitsgruppen für den Plattformserver im öffentlichen Subnetz fest Legen Sie eine Sicherheitsgruppe fest, die die gesamte Kommunikation in vpc zulässt, die standardmäßig auf den Server des privaten Subnetzes kopiert wurde
Normale SSH-Verbindung zum Step Server ok Bestätigen Sie, dass Sie am Leben sind, indem Sie den Ping vom Plattformserver auf den privaten Server überspringen
ping 192.168.1.39
Derzeit verfügt der Plattformserver nicht über einen privaten Schlüssel, sodass eine SSH-Verbindung vom Plattformserver zum privaten Server nicht möglich ist. Es gibt zwei Hauptmuster zum Verbinden
Es ist nicht so gut, den privaten Schlüssel auf dem Plattformserver abzulegen. Versuchen Sie daher, mit der Option ProxyCommand sofort von außen darauf zuzugreifen
Erstellen Sie eine neue ~ / .ssh / config und schreiben Sie wie folgt:
~/.ssh/config
Host test-private
HostName 192.168.1.39 #privater Server private IP
User ec2-user
IdentityFile ~/.ssh/practice.pem
ProxyCommand ssh 3.*.*.* -W %h:%p #Öffentliche IP des Plattformservers
Ich habe versucht, eine SSH-Verbindung herzustellen, konnte jedoch keine Verbindung herstellen
$ ssh test-private
Mac-Benutzername@3.*.*.*: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
Ich habe es mit Bezug auf verschiedene Artikel versucht.
Ich habe die Berechtigungen für ~ / .ssh / config festgelegt, aber es ändert sich nicht
chmod 600 ~/.ssh/config
Auch wenn ich die Berechtigung des privaten Schlüssels festgelegt habe, ändert sich dies nicht
chmod 600 ~/.ssh/practice.pem
Auch wenn ich versuche, sudo hinzuzufügen, tritt folgender Fehler auf
$ sudo ssh test-private
Password:
ssh: Could not resolve hostname test-private: nodename nor servname provided, or not known
Gelöschte Zeilen, die mit derselben IP-Adresse in ~ / .ssh / unknown_hosts beginnen, jedoch unverändert sind
Versuchen Sie es mit einem einzeiligen Befehl, aber nein
$ ssh -o ProxyCommand='ssh -i ~/.ssh/practice.pem ec2-user@3.*.*.* -W 192.168.1.39' -i ~/.ssh/practice.pem [email protected]
Bad stdio forwarding specification ‘192.168.1.39’ #Private Server IP
ssh_exchange_identification: Connection closed by remote host
Ich habe die Sicherheitsgruppe so eingestellt, dass eine SSH-Verbindung zum privaten Server möglich ist, aber es hat nicht funktioniert.
In Zeiten wie diesen ist ** Schlafen das Beste **.
Als ich aufwachte und zurückblickte, gab es etwas Seltsames.
$ ssh test-private
Mac-Benutzername@3.*.*.*: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
Ich habe es übersehen, aber aus irgendeinem Grund zeigt diese Fehlermeldung den Mac-Benutzernamen. Ursprünglich sollte es ec2-user sein (wenn die Standardeinstellungen verwendet werden).
Nachdem Sie ~ / .ssh / config wie folgt geändert haben,
~/.ssh/config
###Fügen Sie Folgendes hinzu
Host test-bastion
Hostname 3.*.*.*
User ec2-user
IdentityFile ~/.ssh/practice.pem
###Addiere hier
Host test-private
Hostname 192.168.1.39
User ec2-user
IdentityFile ~/.ssh/practice.pem
ProxyCommand ssh test-bastion -W %h:%p ###Testen Sie, ob es sich um die IP eines privaten Servers handelt-Wechseln Sie zur Bastion
Erfolgreiche Verbindung! !!
$ ssh test-private
The authenticity of host '192.168.1.39 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:l98F1hMEnkNJR+9ON6GWpq/UQfpm34B62g11byAP15c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.39' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-192-168-1-39 ~]$
Es scheint, dass die Art und Weise, ~ / .ssh / config zu schreiben, schlecht war. Ich habe nur eine Einstellung geschrieben, um den Schritt zu verbinden, daher denke ich, dass ich beide schreiben und einen Fluss von "Schritt → privat" erstellen muss. Und ** aufgeben und ins Bett gehen ** ist auch eine wirksame Maßnahme.
Grundkenntnisse in SSH, die Sie behalten möchten, auch wenn Sie kein Infrastrukturingenieur sind
Mehrstufige SSH-Methode über Stufenserver
AWS Study Group (1) / Erstellung von Step Server und Netzwerk