Problemi durante la connessione a una sessione
Risolvere i problemi che possono verificarsi quando si tenta di connettersi a una sessione esistente.
In generale, per risolvere i problemi dei comandi SSH, aggiungere l'opzione verbose (-v
). Ad esempio:
ssh -v -i <private_key> -N -L <local_port>:<target_IP>:<port> <bastion>
Non utilizzare le opzioni
-vv
o -vvv
.Impossibile connettersi a una sessione utilizzando SSH e una chiave pubblica
Quando si utilizza SSH e una chiave pubblica per connettersi a una SSH gestita o a una sessione di inoltro delle porte (detta anche tunnel SSH), la connessione non riesce e viene visualizzato il seguente messaggio:
Permission denied (publickey)
Per risolvere il problema, modificare il file ~/.ssh/config
e aggiungere le righe seguenti:
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
Utilizzare
*
per l'host nel file di configurazione SSH per accedere sia all'host bastion che all'host di destinazione. In alternativa, è possibile aggiungere host.bastion.*.oci.*
e tutti gli indirizzi IP privati dell'host di destinazione al file di configurazione SSH. Per ulteriori informazioni, vedere Connessione all'istanza.
L'indirizzo IP non è nella lista di inclusione bastion
Quando si crea un bastion, si specifica una lista di inclusione blocchi CIDR. Aggiungere uno o più intervalli di indirizzi nella notazione CIDR per consentire la connessione alle sessioni ospitate da questo bastion.
Se l'indirizzo IP del computer locale non è nella lista di inclusione, il comando SSH non riesce con questo messaggio:
Enter passphrase for key 'id_rsa': <your_passphrase>
...
Connection to host.bastion.<region>.oci.oraclecloud.com closed by remote host.
Modificare il bastion e verificare che l'indirizzo IP del computer locale si trovi nella lista di inclusione dei blocchi CIDR. Dopo aver modificato la lista di inclusione, è necessario anche creare una nuova sessione. Questa modifica non ha effetto sulle sessioni esistenti.
VCN non consente il traffico in entrata dal bastion
La VCN (rete cloud virtuale) e la subnet in cui è stata creata la risorsa di destinazione devono consentire il traffico di rete in entrata dal bastion sulla porta di destinazione.
Quando si tenta di connettersi a una sessione SSH gestita, il timeout della connessione si verifica dopo alcuni minuti e visualizza il messaggio seguente:
Enter passphrase for key 'id_rsa': <your_passphrase>
...
kex_exchange_identification: Connection closed by remote host
Per una sessione di inoltro porta, la connessione SSH iniziale riesce, ma qualsiasi tentativo di utilizzare il tunnel SSH si verifica dopo diversi minuti e stampa lo stesso messaggio di errore.
Ad esempio, per utilizzare una sessione per connettersi alla porta 8001
su un'istanza di computazione da un bastion con l'indirizzo IP 192.168.0.99
, la subnet utilizzata per accedere all'istanza deve consentire il traffico in entrata da 192.168.0.99
sulla porta 8001
.
La lista di sicurezza predefinita per una subnet consente il traffico in entrata alla porta SSH 22
da qualsiasi indirizzo IP, ma questa regola può essere modificata o eliminata. Inoltre, la lista di sicurezza predefinita per una subnet in genere non consente il traffico in entrata da qualsiasi indirizzo IP ad altri numeri di porta, ad esempio:
1521
: Oracle Database3306
: MySQL Database3389
: protocollo RDP (Remote Desktop Protocol)
Aggiornare la lista di sicurezza per la subnet di destinazione e aggiungere l'indirizzo IP del bastion. Vedere Consenso all'accesso di rete dal bastion.
Il comando di inoltro porta non risponde
Quando si utilizza SSH per connettersi a una sessione di inoltro porta (nota anche come tunnel SSH), il processo non viene chiuso dopo aver immesso la passphrase della chiave privata. Questo risultato è normale. Non chiudere il terminal.
Per verificare che il tunnel SSH sia stato creato correttamente, è possibile eseguire di nuovo il comando SSH con output dettagliato. I messaggi finali dopo una connessione riuscita sono:
debug1: Entering interactive session.
debug1: pledge: network
Dopo aver creato il tunnel SSH, utilizzare un'applicazione appropriata per connettersi alla risorsa di destinazione utilizzando la porta locale specificata nel comando SSH: localhost:local port
o 127.0.0.1:local port
.
Ad esempio, per utilizzare una sessione di inoltro della porta a un Oracle Database, aprire Oracle SQL Developer e connettersi a localhost:1521
.
Per ulteriori esempi, vedere Connessione alle sessioni nel bastion.
Connessione inattiva chiusa
Per impostazione predefinita, il server SSH chiude una connessione inattiva dopo 5 minuti. Per impedire la chiusura delle connessioni inattive, configurare il client SSH in modo che invii regolarmente pacchetti vuoti al server.
Ad esempio, in Linux creare o modificare il file ~/.ssh/config
e aggiungere le righe seguenti:
Host *
ServerAliveInterval 120
ServerAliveCountMax 3
In questo esempio, i pacchetti vuoti vengono inviati ogni due minuti (120 secondi) e il client esegue un massimo di tre tentativi.