Comment changer le fuseau horaire de l'utilisateur?

11

Je sais que (par exemple dans Debian) on pourrait utiliser dpkg-reconfigure tzdatapour changer le fuseau horaire du système mais je me demande comment on pourrait changer le fuseau horaire de l' utilisateur (si Linux / Unix supporte une telle idée).

Je travaille normalement sur le serveur à distance via ssh et étant donné que le serveur fonctionne avec UTC en interne (fichiers, ...) et que les fuseaux horaires sont plutôt superficiels, je voudrais voir les heures dans le fuseau horaire souhaité en fonction de l'endroit où je me connecte. Est-ce possible?

Loax
la source
Qu'avez-vous essayé? Avez-vous même recherché "ssh transmission d'informations TZ" sur le Web?
Anthon

Réponses:

13

Utilisez la TZvariable d'environnement. Par exemple:

bash$ export TZ=US/Pacific
bash$ date
Mon Mar  3 00:31:17 PST 2014
bash$ export TZ=US/Eastern
bash$ date
Mon Mar  3 03:33:06 EST 2014

Les valeurs possibles de TZsont dans le répertoire /usr/share/zoneinfo(voir, par exemple, l'existence de /usr/share/zoneinfo/US/Pacific)

samiam
la source
Dans mon cas, datedonne un temps Zose et le temps différent de celui uname -a. Pourquoi serait-ce?
Geremia
8

Tout d'abord, vous avez besoin de quelques configurations pour le serveur ssh et le client ssh.

Dans le serveur, dans /etc/ssh/sshd_config, assurez-vous d'accepter la TZvariable:

AcceptEnv LANG LC_* TZ

Dans Client, /etc/ssh/ssh_configou ~/.ssh/config, assurez-vous d' envoyer TZvariable:

SendEnv TZ

(Les valeurs par défaut consistent généralement à n'en envoyer aucun du client et à n'en accepter aucun sur le serveur.)

Ensuite , faire alias pour sshcommande à utiliser votre position actuelle TZen sshsession. Ajoutez cette ligne au .bashrcfichier:

alias ssh='TZ=${TZ:-"$(cat /etc/timezone)"} ssh'

ou l'utiliser pour le système n'a pas /etc/timezone:

alias ssh='TZ=${TZ:-"$(date +%Z)"} ssh'

Ensuite, chaque fois que vous vous sshconnectez à un serveur distant, l'heure sur le serveur s'affiche en fonction de votre fuseau horaire local.

cuonglm
la source
Vous pouvez également utiliser TZ=$(date +%Z)avec la plupart des versions (Linux / * BSD / Solaris) de date, cela fonctionnera mieux sur les systèmes où ce /etc/timezonen'est pas fait.
mr.spuratic
Petit rappel. N'oubliez pas de redémarrer sshd pour que les modifications prennent effet. Sur Ubuntu "service ssh restart"
cavalcade