O fuso horário está ficando diferente sobre o comando ssh e o ssh normal

2

Sempre que eu executo um comando de data no SSH, o fuso horário é diferente e se eu fizer login no servidor com SSH e se eu executar o mesmo comando, será completamente diferente.

Comando de execução com SSH

>ssh root@server 'date'
[root@server]# date
Mon Sep 22 03:06:33 EDT 2014

Comando de execução após o login com SSH.

[root@server ~]# date
Mon Sep 22 00:07:28 PDT 2014
[root@server ~]#

O fuso horário do segundo caso está correto.

    
por Sriharsha Kalluru 22.09.2014 / 09:08

3 respostas

4

No unix, o fuso horário de um processo individual pode ser definido definindo a variável de ambiente TZ. Cada processo pode ter um valor diferente para o TZ e, assim, mostrar um fuso horário diferente. Se o TZ não estiver definido, existe um padrão para todo o sistema.

No segundo exemplo, você executou o ssh especificando um comando para ser executado no servidor remoto. Então, o ssh configurou uma sessão interativa comum, e seu shell no sistema remoto fez toda a inicialização que ele faz para sessões interativas.

No primeiro exemplo ( ssh root@server 'date' ), você disse ao ssh para executar um comando específico no host remoto. Neste caso, ssh executou o comando sem um TTY. Quando a sessão remota não tem um TTY, a instância remota do seu shell não faz toda a inicialização que normalmente faria para uma sessão interativa. Por isso, ignorou o fornecimento de alguns arquivos como seu .profile ou o perfil do sistema.

Parece que um dos arquivos de inicialização do seu shell define o TZ como um dos fusos horários dos EUA. Quando você faz logon no sistema interativamente, essa inicialização ocorre e você vê os horários no PDT. Quando você faz login não interativamente, essa etapa está sendo ignorada e você está obtendo um fuso horário diferente.

Você pode definir o fuso horário ao executar comandos de maneira não interativa:

ssh user@host 'TZ=US/Pacific date'

Ou você pode forçar o ssh a alocar um TTY, o que deve fazer com que o seu shell remoto execute uma inicialização adicional:

ssh -t user@host 'date'

Mas o que você realmente deveria fazer é corrigir seus arquivos de inicialização do shell. Se você quer que seu fuso horário seja definido toda vez, então você deve mover os comandos que configuram o TZ para ser executado toda vez, não apenas para sessões interativas.

    
por 22.09.2014 / 14:00
3

O TZ errado provavelmente é definido por .profile , .bash_profile ou bashrc , substituindo, assim, a configuração TZ em todo o computador em /etc/timezone

    
por 22.09.2014 / 09:35
-2

O fuso horário é dependente do cliente por design. Imagine que muitos clientes do Globe acessem o mesmo servidor - eles devem ver diferentes horários e fusos horários.

Portanto, verifique as configurações de seus clientes no lado do cliente.

UPDATE

O seu tempo nos dois computadores deve estar CORRECTO. Correto significa que o computador pode derivar a hora UTC. Ou seja ou o relógio do sistema deve ser UTC, ou deve ser fuso horário diferente, mas o computador deve saber o fuso horário.

    
por 22.09.2014 / 10:07