7
novembre
2025
15:50

« Réglage de l'heure de l'ordinateur à l'aide du GPS sur un smartphone via SSH »

7 novembre 2025 15:50

Cette méthode offre une précision jusqu'à 2-3 secondes, car la requête-réponse via ssh prend du temps.

Introduction. Idée générale

Le réglage de la date et de l'heure est une tâche urgente s'il n'y a pas de transmission de données 4G.

Cette méthode utilise les satellites GPS :

  • Premièrement, le smartphone est synchronisé via les satellites GPS/GLONASS.
  • Ensuite, l'ordinateur se connecte au smartphone via ssh et règle l'heure dans le système d'exploitation en fonction de l'horloge du smartphone (mais l'horloge du PC finira par être en retard de 2 à 3 secondes en raison de la demande-réponse).

Pourquoi pas un serveur NTP ou SNTP ?

  • ВUn utilisateur Android est autorisé à utiliser des ports supérieurs à 1024 inclus, donc sous Android, il est impossible d'exécuter un serveur NTP pour que son port devienne 123. Tous les utilitaires Linux se connectent au port 123 pour la synchronisation de l'heure.

ПоэJ'ai utilisé une autre option - SSH avec un port arbitraire supérieur à 1023. Dans ce cas, le port suggéré par SSHdaemon est utilisé - 8022, mais il peut s'agir de n'importe quoi compris entre 1024 et 49151.

Vérifier que le port est en écoute (ouvert) :

nmap 192.168.1.57 -p 1025

Cela devrait être comme ceci :
Démarrage de Nmap 7.80 ( https://nmap.org ) le 07/11/2025 à 16h16 MSK
Rapport d'analyse Nmap pour ... (192.168.1.57)
L'hôte est opérationnel (latence de 0,45 s).

SERVICE DE L'ÉTAT DU PORT
1025/tcp ouvert NFS-ou-IIS

Nmap terminé : 1 adresse IP (1 hôte activé) analysée en 0,77 seconde

J'ai utilisé l'application comme serveur SSH sous Android https://play.google.com/store/apps/details?id=com.daemon.ssh.

L'accès à SSH se fait par mot de passe.

Point d'accès Wi-Fi mobile ou routeur Wi-Fi, où le PC et le smartphone sont sur le même réseau local.

Solution

Ce code a été débogué par moi sous Linux Mint et Android :

sudo date +"%Y-%m-%d %T" --set "$(echo date +'%Y-%m-%d_%T' | sshpass -fpwd ssh -q 192.168.1.57 -p 8022 -l user | sed -e 's/_/ /')" 


setpass - un utilitaire pour utiliser un mot de passe au lieu de clés,
pwd - nom du fichier. qui stocke le mot de passe ssh. pwd peut être remplacé par un autre texte en fonction du nom du fichier, par exemple "1" ou "a".
ssh - utilitaire de ligne de commande pour se connecter à un serveur ssh,
8022 - port du serveur ssh sous Android OS,
-l user - nom de connexion de l'utilisateur ssh,
q - mode ssh silencieux sans émettre de messages inutiles,
192.168.1.57 - Adresse IP du serveur SSH (pour Android),
sed - pour remplacer le trait de soulignement par un espace,

date --set - commande pour régler l'heure sur l'ordinateur local.

Avant d'exécuter l'utilitaire, désactivez la synchronisation de l'heure NTP sur le réseau :

timedatectl set-ntp false
timedatectl

Explication du principe de fonctionnement

Sur Internet sur les forums, je suis tombé sur un moyen simplifié de régler l'heure du PC via la console SSH - Secure Socket Shell, via lequel la commande est exécutée date sur un PC distant.

Les options sont les suivantes :

date --set="$(ssh utilisateur@serveur date)" 

ssh utilisateur@serveur sudo date -s @`( date -u +"%s" )` 

date +%Y%m%d%T -s "`ssh user@server 'date "+%Y%m%d %T "'`" 

date --set="$(ssh utilisateur@serveur 'date -u')"

J'ai commencé à déboguer la première version de la commande "date --set=".

Régler l'heure manuellement à partir de la ligne de commande sous Linux :

sudo date +"%Y-%m-%d %H:%M:%S" --set "2025-11-07 14:40:00" 

Affichage de la date et de l'heure actuelles au format souhaité sous Android ou Linux

date +"%Y-%m-%d %H:%M:%S" 

(Résultat : 2025-11-07 16:09:45).

Connexion à un serveur SSH depuis Linux

Connexion manuelle avec demande de mot de passe :

ssh user@192.168.1.57 -p 8022

ou

ssh 192.168.1.57 -p 8022 -l user

où user est le nom de connexion de l'utilisateur ssh sur le serveur auquel l'accès est accordé,
192.168.1.57 - Adresse IP du serveur SSH,
8022 est le port TCP utilisé par le serveur SSH.

Connexion automatisée au serveur ssh avec mot de passe :

sshpass -fpwd ssh -q 192.168.1.57 -p 8022 -l user

où pwd est un fichier texte dans le répertoire courant contenant le mot de passe ssh.

(Au lieu de -fpwd, vous pouvez utiliser le mot de passe en clair -ppassword, que je ne recommande pas. Il n'y a pas d'espace entre -f et le nom du fichier, ni entre le commutateur -p et le mot de passe. Voir l'aide.man sshpass).

Inconvénient

Avec cette méthode, l'horloge du PC est en retard de 2 à 3 secondes sur l'heure mondiale.

Activation de NTP (si Internet est disponible)

Si Internet apparaît, activez la synchronisation native de l'heure Linux (sur les systèmes basés sur SystemD) :

timedatectl set-ntp true

Visualisez le résultat de la synchronisation de l'heure :

timedatectl

Vérification de l'écart de l'heure du PC par rapport à l'heure mondiale

Site Web pour vérifier l'horloge du PC :https://time.is.



Publications connexes