Bonjour,
Je travaille sur un robot basé sur un ordinateur Jetson Xavier AGX developper kit (c'est un peu comme un raspberry pi, mais de la puissance d'un ordi de gamer), sous Ubuntu 18.04.
Pour pouvoir y accéder à distance, j'utilise une clé 4G.
Vu qu'une clé 4G n'est pas sur le même réseau local, et n'a pas d'IP publique, je ne peux pas me connecter directement au robot en ssh.
La solution que j'ai trouvée est le reverse SSH via un serveur (VPS à 5€/mois, sous ubuntu 20.4, adresse IP4 publique et fixe) : ke robot se connecte au serveur, et depuis mon ordinateur, je me connecte en SSH au serveur puis depuis celui-ci en reverse SSH au robot.
NB : toutes les connections SSH se font par mot de passe
Quand sur le robot, je lance manuellement la connexion vers le serveur, tout fonctionne. En revanche, je n'arrives pas à lancer la connexion ddu robot vers le serveur automatiquement depuis rc.local
Sur le robot, j'ai :
/home/xavier0/launch_reverse_ssh.sh avec autorisations -rwxrwxrwx, propriétaire xavier0 , qui contient :
# !/bin/sh
sshpass -p MOT_DE_PASSE ssh -NR 10000:localhost:22 user0@IP_DE_MON_SERVEUR &
/etc/rc.local avec autorisations -rwxr-xr-x , propriétaire root, qui contient
#!/bin/bash
(sleep 120 & su - xavier0 -c /home/xavier0/launch_reverse_ssh.sh >/home/xavier0/ssh_for_reverse.log 2>&1 )&
#quelques autres lignes (mais celle pour le ssh est la première)
exit 0
Depus le serveur, je lance :
ssh -p 10000 boroboxavier0@localhost
Les tests effectués (sauf indication contraires, lancé en tant qu'utilisateur xavier0) :
- lorsque je lance ~/launch_reverse_ssh.sh : tout se passe bien, j’arrive à me connecter au robot depuis le serveur
- lorsque je lance sudo /etc/rc.local : idem, tout se passe bien (sauf erreur de ma part, rc.local est lancé en root). Le fichier /home/xavier0/ssh_for_reverse.log est vide
- lorsque je me connecte en root (sudo su -) puis que je lance /etc/rc.local : tout se passe bien. Le fichier /home/xavier0/ssh_for_reverse.log est vide
Mais lors du démarage de l'ordinateur, la connexion ne peut pas être établie, et le fichier /home/xavier0/ssh_for_reverse.log contient :
ssh: connect to host IP_DE_MON_SERVEUR port 22: Network is unreachable
Est-ce que vous avez une idée d'où peut venir le problème? Ou vous avez une solution alternative à proposer?
Merci d'avance
Sandro