Aller au contenu principal

Se connecter en SSH à des instances AWS EC2 depuis votre Mac

Les instances publiques avec leur paire de clés, les privées via un bastion, une base privée par un tunnel : chacune enregistrée une fois comme profil.

Par Lucas Russo, développeur de SSHive · Mis à jour le

Les instances EC2 se présentent sous deux formes : les publiques, que vous joignez directement avec la paire de clés fournie par AWS, et les privées, dans un sous-réseau de VPC que seuls un bastion ou un VPN atteignent. Derrière, il y a souvent une base RDS qui ne répond qu'à l'intérieur du VPC. Avec le client OpenSSH, cela donne ssh -i ~/keys/app.pem -J ec2-user@bastion ec2-user@10.0.1.42, tapé de mémoire. Dans SSHive, chaque machine est un profil : le bastion une fois, chaque instance privée qui pointe vers lui, et le tunnel vers la base sur le profil du bastion. Quand l'adresse du bastion change, vous modifiez un seul profil.

Une instance publique et sa clé .pem

AWS vous remet un fichier .pem quand vous créez une paire de clés. Le plus propre, dans SSHive, est de l'importer une fois : ouvrez Paramètres > Clés SSH > Importer une clé et collez le contenu du fichier. SSHive conserve alors la clé chiffrée, et le profil ne dépend plus d'un fichier qui traîne dans Téléchargements. Créez un profil avec le nom DNS public ou l'IP de l'instance et l'utilisateur de son AMI : ec2-user sur Amazon Linux, ubuntu sur Ubuntu, admin sur Debian. Le groupe de sécurité de l'instance doit autoriser le port 22 depuis votre adresse.

Les instances privées via un bastion

Les serveurs applicatifs ont leur place dans des sous-réseaux privés, joints par un bastion dans le sous-réseau public. Créez d'abord le profil du bastion (adresse publique, utilisateur, clé). Dans le profil d'une instance privée, saisissez son IP privée, puis ouvrez Options avancées > Chaîne de sauts (multi-hop), choisissez Ajouter un hop et sélectionnez le bastion. SSHive se connecte d'abord au bastion, puis ouvre la session vers l'instance à travers lui. Chaque saut s'authentifie avec son propre profil : le bastion et l'instance peuvent donc utiliser des clés différentes. Une chaîne compte jusqu'à cinq sauts, et c'est une fonction Pro. Le guide du jump host la détaille écran par écran.

Une base RDS privée depuis TablePlus ou DBeaver

RDS se trouve dans un sous-réseau privé, et votre client de base de données sur le Mac ne peut pas l'atteindre. Le bastion, si. Sur le profil du bastion, ajoutez un tunnel local : port local 5432, hôte distant mydb.xxxxxxxx.eu-west-1.rds.amazonaws.com, port distant 5432. Connectez-vous au bastion, puis pointez TablePlus ou DBeaver sur localhost:5432 avec les identifiants de la base. Le nom est résolu sur le bastion, à l'intérieur du VPC, et c'est ce qui rend la connexion possible. Cette partie tient dans la version gratuite : c'est un seul tunnel local sur une connexion directe.

Ce qui est gratuit ici, et ce qui demande Pro

Une instance publique avec sa clé, le SFTP et le tunnel vers RDS sur le bastion fonctionnent tous dans la version gratuite, dans la limite de 5 profils et 2 sessions simultanées. Les instances privées demandent SSHive Pro, puisque la chaîne de sauts est une fonction Pro ; Pro lève aussi les limites de profils et de sessions et ajoute le broadcast, pour envoyer la même commande à un groupe d'instances. Il coûte 14,99 €, une seule fois.

Questions fréquentes

Puis-je passer par AWS Session Manager plutôt que par un port 22 ouvert ?+
Oui, par une redirection de port. Avec le plugin Session Manager de l'AWS CLI installé sur le Mac, lancez ceci dans le Terminal : aws ssm start-session --target i-0123456789abcdef0 --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["22"], "localPortNumber":["2222"]}' Connectez ensuite un profil SSHive à localhost, port 2222, avec l'utilisateur et la clé de l'instance. L'instance n'a besoin d'aucune règle entrante sur le port 22.
Que se passe-t-il quand l'adresse IP de l'instance change ?+
Arrêter puis démarrer une instance lui donne une nouvelle IP publique et un nouveau nom DNS public, sauf si une Elastic IP y est associée. Associez-en une aux machines auxquelles vous vous connectez souvent, ou joignez-les par le bastion avec leur IP privée, qui reste la même pendant toute la vie de l'instance. Dans les deux cas, un seul profil est à modifier.
Puis-je copier des fichiers vers S3 depuis SSHive ?+
SSHive parle SSH et SFTP, pas S3. Dans la session SSH de l'instance, aws s3 cp fait le travail, et avec un rôle d'instance associé, sans clé d'accès. Le volet SFTP, lui, sert au disque de l'instance.

Fonctionnalités SSHive associées

Essayer SSHive gratuitement sur macOS

Obtenez le client tout-en-un SSH, SFTP, RDP et VNC pour Mac. Téléchargement gratuit, sans inscription.