Estou executando o seguinte no terminal do Unix:
client$: ssh host "cat foo.txt"
e esperando que a saída do arquivo e a conexão ssh sejam fechadas, por exemplo:
bar
client$:
O que está realmente acontecendo é que nenhuma saída é produzida pelo cat e o terminal ainda está no host remoto:
server$ :
Agora posso fazer o "cat foo.txt" e obter o conteúdo do arquivo e fechar a conexão com a saída ou o logout. Ouptut do ssh é:
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB
debug2: channel 0: request env confirm 0
debug1: Sending command: cat foo.txt
debug2: channel 0: request exec confirm 0
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
Eu tenho outra conta de usuário para a qual isso realmente funciona bem, mas até agora não consegui encontrar uma diferença na configuração / perfil que possa estar causando esse comportamento.
A saída ssh para uma conta de usuário em funcionamento é:
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB
debug2: channel 0: request env confirm 0
debug1: Sending command: cat foo.txt
debug2: channel 0: request exec confirm 0
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
bar
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.2 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0
debug1: Exit status 0
Existe alguma configuração óbvia que possa estar causando isso? Ou alguma opção ssh que possa ajudar? Eu dei uma olhada em .bashrc e .bash_profile, mas não vejo nada que possa ser a causa. Ambos os usuários não possuem .ssh / config, então acho que a configuração é em todo o sistema em / etc / ssh / ssh_config. Executando o ssh -n host "cat foo.txt" fecha a conexão, mas ainda não há saída do cat:
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB
debug2: channel 0: request env confirm 0
debug1: Sending command: cat foo.txt
debug2: channel 0: request exec confirm 0
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel 0: read<=0 rfd 5 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug2: channel 0: input drain -> closed
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.3 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0
debug1: Exit status 0