Problèmes de connexion à une session
Corrigez les problèmes qui peuvent survenir lorsque vous essayez de vous connecter à une session existante.
En général, pour dépanner les commandes SSH, ajoutez l'option verbose (-v
). Par exemple :
ssh -v -i <private_key> -N -L <local_port>:<target_IP>:<port> <bastion>
N'utilisez pas les options
-vv
ou -vvv
.Impossible de se connecter à une session à l'aide de SSH et d'une clé publique
Lorsque vous utilisez SSH et une clé publique pour vous connecter à une session SSH gérée ou de transfert de port (également appelée tunnel SSH), la connexion échoue et le message suivant s'affiche :
Permission denied (publickey)
Pour résoudre le problème, modifiez le fichier ~/.ssh/config
et ajoutez les lignes suivantes :
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
Utilisez
*
pour l'hôte dans le fichier de configuration SSH afin d'accéder à l'hôte de bastion et à l'hôte cible. Vous pouvez également ajouter host.bastion.*.oci.*
et toutes les adresses IP privées de l'hôte cible au fichier de configuration SSH. Pour obtenir de l'aide, reportez-vous à Connexion à votre instance.
L'adresse IP n'est pas dans la liste d'autorisation de bastion
Lorsque vous créez un bastion, vous indiquez une liste d'autorisation de bloc CIDR. Vous ajoutez à la notation CIDR, les plages d'adresses que vous souhaitez autoriser à se connecter aux sessions hébergées par ce bastion.
Si l'adresse IP de la machine locale ne figure pas dans la liste d'autorisation, la commande SSH échoue avec le message suivant :
Enter passphrase for key 'id_rsa': <your_passphrase>
...
Connection to host.bastion.<region>.oci.oraclecloud.com closed by remote host.
Modifiez le bastion et vérifiez que l'adresse IP de la machine locale figure dans la liste d'autorisation de bloc CIDR. Une fois la liste d'autorisation modifiée, vous devez également créer une session. Cette modification n'a aucune incidence sur les sessions existantes.
Le VCN n'autorise pas le trafic entrant à partir de Bastion
Le réseau cloud virtuel et le sous-réseau dans lesquels la ressource cible a été créée doivent autoriser le trafic réseau entrant à partir du bastion sur le port cible.
Lorsque vous essayez de vous connecter à une session SSH gérée, la connexion expire au bout de quelques minutes et le message suivant s'affiche :
Enter passphrase for key 'id_rsa': <your_passphrase>
...
kex_exchange_identification: Connection closed by remote host
Pour une session de transmission de port, la connexion SSH initiale est établie, mais toute tentative d'utilisation du tunnel SSH expire au bout de quelques minutes et le même message d'erreur est imprimé.
Par exemple, pour utiliser une session pour se connecter au port 8001
sur une instance de calcul, à partir d'un bastion avec l'adresse IP 192.168.0.99
, le sous-réseau utilisé pour accéder à l'instance doit autoriser le trafic entrant à partir de 192.168.0.99
sur le port 8001
.
La liste de sécurité par défaut d'un sous-réseau autorise le trafic entrant vers le port SSH 22
à partir de n'importe quelle adresse IP, mais vous pouvez modifier ou supprimer cette règle. De plus, la liste de sécurité par défaut d'un sous-réseau n'autorise généralement pas le trafic entrant d'adresse IP vers d'autres numéros de port, par exemple :
1521
: Oracle Database3306
: MySQL Database3389
: RDP (Remote Desktop Protocol)
Mettez à jour la liste de sécurité du sous-réseau cible et ajoutez l'adresse IP du bastion. Reportez-vous à Autorisation de l'accès réseau à partir du bastion.
La commande de transmission de port ne répond pas
Lorsque vous utilisez SSH pour vous connecter à une session de transmission de port (également appelée tunnel SSH), le processus ne s'arrête pas après avoir entré la phrase de passe de clé privée. Ceci est tout à fait normal. Ne fermez pas le terminal.
Pour vérifier que le tunnel SSH a été créé, vous pouvez exécuter à nouveau la commande SSH avec une sortie en mode verbose. Les derniers messages qui s'affichent après l'établissement d'une connexion sont les suivants :
debug1: Entering interactive session.
debug1: pledge: network
Après avoir créé le tunnel SSH, utilisez une application appropriée pour vous connecter à la ressource cible à l'aide du port local indiqué dans la commande SSH : localhost:local port
ou 127.0.0.1:local port
.
Par exemple, pour utiliser une session de transmission de port vers Oracle Database, ouvrez Oracle SQL Developer et connectez-vous à localhost:1521
.
Pour plus d'exemples, reportez-vous à Connexion aux sessions dans le bastion.
La connexion inactive est fermée
Par défaut, le serveur SSH ferme une connexion inactive au bout de 5 minutes. Pour empêcher la fermeture des connexions inactives, configurez le client SSH pour qu'il envoie régulièrement des paquets vides au serveur.
Par exemple, sous Linux, créez ou modifiez le fichier ~/.ssh/config
et ajoutez les lignes suivantes :
Host *
ServerAliveInterval 120
ServerAliveCountMax 3
Dans cet exemple, des paquets vides sont envoyés toutes les deux minutes (120 secondes) et le client effectue trois tentatives au maximum.