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