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>
Nota

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
Nota

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 Database
  • 3306: MySQL Database
  • 3389: 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.