Connexion SSH à un serveur privé à l'aide d'un serveur de plateforme dans EC2

J'ai trébuché en étudiant la connexion ssh du serveur de la plateforme au serveur privé en utilisant EC2, donc je la posterai pour la première fois à titre d'exemple. [Articles de référence](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 Comme je l'ai écrit dans% 8B), il existe de nombreux autres articles sur Qiita, veuillez donc vous y référer également.

Que veux-tu faire

Je veux créer EC2 dans chacun du sous-réseau public et du sous-réseau privé créés dans le même AZ, et configurer la connexion au serveur privé pour utiliser le serveur public comme tremplin.

Qu'est-ce qui s'est passé

Définir les groupes de sécurité par défaut et par autorisation ssh pour le serveur de plate-forme dans le sous-réseau public Définissez un groupe de sécurité qui autorise toutes les communications dans vpc copiées par défaut sur le serveur du sous-réseau privé

Ce que vous pouvez confirmer

Connexion ssh normale au serveur pas à pas ok Confirmez que vous êtes en vie en ignorant le ping du serveur de plate-forme vers le serveur privé

ping 192.168.1.39

Erreur est survenue

À l'heure actuelle, le serveur de plate-forme n'a pas de clé privée, donc la connexion ssh du serveur de plate-forme au serveur privé n'est pas possible. Il existe deux modèles principaux à connecter

Il n'est pas si bon de mettre la clé privée sur le serveur de la plate-forme, alors essayez la méthode d'accès de l'extérieur à la fois avec l'option ProxyCommand

Créez un nouveau ~ / .ssh / config et écrivez comme suit,

~/.ssh/config


Host test-private
  HostName 192.168.1.39 #IP privée du serveur privé
  User ec2-user
  IdentityFile ~/.ssh/practice.pem
  ProxyCommand ssh 3.*.*.* -W %h:%p #IP publique du serveur de la plateforme

J'ai essayé la connexion ssh, mais je n'ai pas pu me connecter

$ ssh test-private
Nom d'utilisateur Mac@3.*.*.*: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host

Ce que j'ai essayé

Je l'ai essayé en référence à divers articles.

J'ai défini les autorisations pour ~ / .ssh / config, mais cela ne change pas

chmod 600 ~/.ssh/config

Même si je définis l'autorisation de la clé privée, cela ne change pas

chmod 600 ~/.ssh/practice.pem

Même si j'essaye d'ajouter sudo, l'erreur suivante

$ sudo ssh test-private
Password:
ssh: Could not resolve hostname test-private: nodename nor servname provided, or not known

Lignes supprimées commençant par la même adresse IP dans ~ / .ssh / known_hosts mais inchangées

Essayez une commande sur une ligne, mais non

$ 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’ #IP du serveur privé
ssh_exchange_identification: Connection closed by remote host

J'ai configuré le groupe de sécurité pour autoriser la connexion ssh au serveur privé, mais cela n'a pas fonctionné.

Dans des moments comme celui-ci, ** dormir est le meilleur **.

Endroit drôle

Quand je me suis réveillé et j'ai regardé en arrière, il y avait quelque chose d'étrange.

$ ssh test-private
Nom d'utilisateur Mac@3.*.*.*: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host

Je l'ai oublié, mais pour une raison quelconque, ce message d'erreur montre le nom d'utilisateur Mac. À l'origine, il devrait être ec2-user (si les paramètres par défaut sont utilisés).

Solution

Après avoir modifié ~ / .ssh / config comme suit,

~/.ssh/config


###Ajoutez ce qui suit
Host test-bastion
  Hostname 3.*.*.*
  User ec2-user
  IdentityFile ~/.ssh/practice.pem
###Ajouter ici

Host test-private
  Hostname 192.168.1.39
  User ec2-user
  IdentityFile ~/.ssh/practice.pem
  ProxyCommand ssh test-bastion -W %h:%p ###Tester qu'il s'agissait de l'adresse IP d'un serveur privé-Changer en bastion

Connexion réussie! !!

$ 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 ~]$

Il semble que la manière d'écrire ~ / .ssh / config était mauvaise. Je n'ai écrit qu'un seul paramètre pour connecter l'étape, donc je sens que je dois écrire les deux et créer un flux de "step → private". Et ** abandonner et se coucher ** est également une mesure efficace.

Articles que j'ai utilisés comme référence

Comment éviter l'erreur de connexion SH: 3 façons de supprimer / ne pas supprimer un hôte spécifique de .ssh / known_hosts

Connaissance de base de SSH que vous souhaitez conserver même si vous n'êtes pas un ingénieur d'infrastructure

Méthode SSH en plusieurs étapes via le serveur d'étapes

AWS Study Group (1) / Creation of Step Server and Network

Recommended Posts

Connexion SSH à un serveur privé à l'aide d'un serveur de plateforme dans EC2
Remarque sur la façon de vérifier la connexion au port du serveur de licences
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
[Partie 2] Construisons un serveur Web avec EC2 Linux
AWS EC2 2nd SSH connection to EC2 Instance (Amazon Linux 2)
Comment exécuter Django sur IIS sur un serveur Windows
Comment utiliser GitHub sur un serveur multi-personnes sans mot de passe
[Postgresql] Connexion SSH au serveur de base de données externe à partir du client
Comment générer une clé publique à partir d'une clé privée SSH
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Connectez-vous à centos6 sur Virtualbox avec une connexion SSH depuis Mac
Connexion SSH à l'aide de la clé publique
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
Comment continuer le traitement après avoir renvoyé une réponse sur aiohttp Server
Ce sur quoi je suis tombé lors de l'utilisation de CodeIgniter sur un serveur Linux
Préparation à l'exécution de Flask sur EC2
Exécutez un serveur Linux avec GCP
Utilisation d'une console série sur Ubuntu 20.04
Exécutez TensorFlow2 sur le serveur VPS
Ajouter des utilisateurs connectables SSH à EC2
Remarques sur l'utilisation de matplotlib sur le serveur
Essayez de déduire à l'aide d'un modèle de régression linéaire sur Android [PyTorch Mobile]
Modifiez le fichier du serveur de destination de la connexion SSH sur le serveur avec VS Code
Créer un serveur proxy avec nginx sur plusieurs serveurs distants à l'aide d'Ansible
Je voulais créer rapidement un serveur de messagerie utilisable librement avec postfix + dovecot sur EC2
Construire un serveur de cache Pypi sur QNAP
Créez facilement un serveur DNS en utilisant Twisted
Comment dessiner un graphique avec Matplotlib
Construisez un serveur WebDAV simple sur Linux
Lancement de l'instance AWS EC2 et connexion SSH
Comment installer un package à l'aide d'un référentiel
Configurer un serveur de messagerie avec Twisted
Construire un serveur Samba sur Arch Linux
Configurons un serveur WEB avec Chromebook
Comment tester sur une page authentifiée par Django
Exécuter le notebook Jupyter sur un serveur distant
[2015/11/19] Comment enregistrer un service localement à l'aide du SDK python avec naoqi os
Une histoire d'essayer d'installer uwsgi sur une instance EC2 et d'échouer
Comment créer rapidement un environnement d'analyse morphologique à l'aide d'Elasticsearch sur macOS Sierra
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
Installation et configuration du client PyFilter pour surveiller les connexions SSH au serveur Alibaba Cloud Ubuntu