[LINUX] SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2

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.

Was willst du tun

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.

Was ging

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

Was Sie bestätigen können

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

Ein Fehler ist aufgetreten

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

Was ich versucht habe

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 **.

Lustiger Ort

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).

Lösung

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.

Artikel, die ich als Referenz verwendet habe

So vermeiden Sie SH-Verbindungsfehler: 3 Möglichkeiten zum Entfernen / Entfernen eines bestimmten Hosts aus .ssh / unknown_hosts

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

Recommended Posts

SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2
Ein Hinweis zum Überprüfen der Verbindung zum Lizenzserver-Port
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
[Teil 2] Erstellen wir einen Webserver mit EC2 Linux
AWS EC2 2. SSH-Verbindung zur EC2-Instanz (Amazon Linux 2)
So führen Sie Django unter IIS auf einem Windows-Server aus
Verwendung von GitHub auf einem Server für mehrere Personen ohne Kennwort
[Postgresql] SSH-Verbindung zum externen DB-Server vom Client
So generieren Sie einen öffentlichen Schlüssel aus einem privaten SSH-Schlüssel
[Einführung in AWS] Memorandum zum Erstellen eines Webservers auf AWS
Stellen Sie mit ssh-Verbindung vom Mac aus eine Verbindung zu centos6 auf der Virtualbox her
SSH-Verbindung mit öffentlichem Schlüssel
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Richten Sie mit Tensorflow einen Knoten für MNIST auf ROS ein
So setzen Sie die Verarbeitung fort, nachdem Sie eine Antwort auf aiohttp Server zurückgegeben haben
Worauf ich bei der Verwendung von CodeIgniter auf einem Linux-Server gestoßen bin
Vorbereiten des Betriebs von Flask auf EC2
Führen Sie einen Linux-Server mit GCP aus
Verwenden einer seriellen Konsole unter Ubuntu 20.04
Führen Sie TensorFlow2 auf dem VPS-Server aus
Fügen Sie EC2-fähige Benutzer zu EC2 hinzu
Hinweise zur Verwendung von matplotlib auf dem Server
Versuchen Sie mit einem linearen Regressionsmodell auf Android [PyTorch Mobile] zu schließen
Bearbeiten Sie die Datei des SSH-Verbindungszielservers auf dem Server mit VS-Code
Erstellen Sie mit Ansible einen Proxyserver mit nginx auf mehreren Remote-Servern
Ich wollte schnell einen Mailserver erstellen, der mit postfix + dovecot auf EC2 frei verwendet werden kann
Erstellen Sie einen Pypi-Cache-Server auf QNAP
Erstellen Sie einfach einen DNS-Server mit Twisted
So zeichnen Sie ein Diagramm mit Matplotlib
Erstellen Sie einen einfachen WebDAV-Server unter Linux
Start der AWS EC2-Instanz und SSH-Verbindung
So installieren Sie ein Paket mithilfe eines Repositorys
Richten Sie mit Twisted einen Mailserver ein
Erstellen Sie einen Samba-Server unter Arch Linux
Lassen Sie uns einen WEB-Server mit Chromebook einrichten
So testen Sie auf einer von Django authentifizierten Seite
Führen Sie Jupyter Notebook auf einem Remote-Server aus
[19.11.2015] So registrieren Sie einen Dienst lokal mit dem Python SDK bei naoqi os
Eine Geschichte über einen Versuch, uwsgi auf einer fehlgeschlagenen EC2-Instanz zu installieren
So erstellen Sie mit Elasticsearch unter macOS Sierra schnell eine morphologische Analyseumgebung
SSH-Anmeldung am Zielserver von Windows mit einem Klick auf eine Verknüpfung
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
Installieren und Konfigurieren des PyFilter-Clients zur Überwachung von SSH-Verbindungen zum Alibaba Cloud Ubuntu-Server