ssh pode ser chamado de algumas maneiras diferentes, cada um resultando em tratamento ligeiramente diferente de sinais iniciados pelo terminal como Ctrl-C .
-
ssh remotehostexecutará uma sessão interativa emremotehost. No lado do cliente,sshtentará definir o tty usado pelo stdin para o modo "bruto", esshdno 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.
sshenviará 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 remotosshdfecha a conexão esshrelatóriosConnection to remotehost closed. -
ssh remotehost command args ...executará uma sessão não interativa emremotehost. No lado do cliente,sshnão definirá o tty para o modo raw (bem, exceto para ler uma senha ou passphrase). Se você digitar Ctrl-C ,sshserá 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.