ssh
pode ser chamado de algumas maneiras diferentes, cada um resultando em tratamento ligeiramente diferente de sinais iniciados pelo terminal como Ctrl-C .
-
ssh remotehost
executará uma sessão interativa emremotehost
. No lado do cliente,ssh
tentará definir o tty usado pelo stdin para o modo "bruto", esshd
no host remoto alocará uma pseudo-tty e executará seu shell como um shell de login (por exemplo,-bash
).A definição do modo raw significa que os caracteres que normalmente enviam sinais (como Ctrl-C e Ctrl - \ ) são inseridos no fluxo de entrada.
ssh
enviará tais caracteres como estão para o host remoto, onde eles provavelmente enviarão SIGINT ou SIGQUIT e, normalmente, matarão qualquer comando e o retornarão a um shell no host remoto. A conexão ssh permanecerá ativa, contanto que o shell remoto esteja ativo. -
ssh -t remotehost command args ...
executará uma sessão interativa emremotehost
, assim como o acima, exceto no lado remoto,your_shell -c "command args ..."
será executado. Como acima, se você digitar Ctrl-C , ele será enviado ao host remoto, onde o comando provavelmente receberá SIGINT e imediatamente sairá, e então o shell remoto sairá. O controle remotosshd
fecha a conexão essh
relatóriosConnection to remotehost closed.
-
ssh remotehost command args ...
executará uma sessão não interativa emremotehost
. No lado do cliente,ssh
não definirá o tty para o modo raw (bem, exceto para ler uma senha ou passphrase). Se você digitar Ctrl-C ,ssh
será enviado SIGINT e será imediatamente terminado, sem mesmo emitir uma mensagemConnection to remotehost closed
.Os
your_shell -c "command args ..."
processos provavelmente permanecerão em execução no host remoto . Ou eles sairão sozinhos, ou um processo tentará gravar dados no soquete ssh agora fechado, o que fará com que um sinal SIGPIPE (normalmente) fatal seja enviado para ele.