La chiave SSH non funziona per accedere ad un Firewall Fortinet

Sono diventato matto cercando di scoprire perchè il mio server non aveva accesso ad un firewall Fortinet tramite chiave ssh. Ecco come ho fatto.

Ho uno script che doveva collegarsi in ssh tramite chiave su un firewall fortinet, ma ho notato che falliva sempre. Provando manualmente ad accedere dal server al firewall mi sono accorto che il firewall mi chiedeva la password anzichè darmi accesso tramite chiavi

Troubleshooting del problema

Ipotiziamo questi elementi:

ostrich -> il nome dell’utente che sta accedendo al firewall

myserver -> il server da cui partono le richieste ssh

fortinet.localhostrich -> il nome dns del firewall fortinet

Testiamo la connettività

Testiamo la connettività sulla porta 22 (ssh), nel mio caso sono certo che funzioni perchè il firewall mi risponde chiedendomi la password:

[ostrich@myserver ~]# ssh ostrich@fortinet.localhostrich
ostrich@fortinet.localhostrich's password:
 

Nel caso non lo facesso dovrei verificare la porta 22 tramite un telent

[ostrich@myserver ~]# telnet ostrich@fortinet.localhostrich 22

Se ottieni un timeout, la porta è chiusa ed il problema è del groppo di rete.

Verificare l’utente sul firewall

Ovvio ma, esiste l’utente sul firewall? è abilitato l’accesso da remoto dal mio server? la chiave ssh è corretta?

Verifichiamo prima se l’utente esiste ed è permesso l’accesso dal mio server e poi la chiave ssh (se presente)

La chiave ssh che trovi deve essere la stessa presente qui nel server:

[ostrich@myserver ~]# cat /home/ostrich/.ssh/id_rsa.pub

Usa le giuste opzioni sul comando SSH nel server

Questa è stata la soluzione al mio problema, facendo solo ssh user@ip la chiave ssh non funzionava

La soluzione è stata aggiungere questa opzione: -o PubkeyAcceptedAlgorithms=+ssh-rsa

[ostrich@myserver ~]# ssh -o PubkeyAcceptedAlgorithms=+ssh-rsa ostrich@fortinet.localhostrich
MiFirewall #

-o PubkeyAcceptedAlgorithms=+ssh-rsa fix my problem

Questo stesso problema si può presentare anche con il comando scp