Quando você executa ssh [email protected]
em um ambiente de terminal normal, seu cliente SSH (o processo ssh em sua máquina local) solicitará um psuedo-terminal (pty) do servidor.
O GitHub sempre negou a alocação de arquivos.
Versões mais antigas (anteriores a 5.6) do ssh do OpenSSH "voltarão" para o modo no-pty se o servidor rejeitar sua solicitação de alocação pty.
Versões mais recentes (5.6 a 5.8) do ssh aborto do OpenSSH se o servidor rejeitar sua solicitação de alocação pty.
As versões mais recentes (5.9 e posteriores) do ssh do OpenSSH receberão a ação anterior (continuar) se a alocação pty for feita automaticamente e a última ação (abortar) se houver uma solicitação explícita para um pty ( -t
dado ou RequestTTY
igual a yes
/ force
).
Você pode dizer a ssh (antigo ou novo) para evitar solicitar uma alocação de pty usando a opção -T
:
ssh -T [email protected]
Você deve então ver a mensagem do GitHub:
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
Do anúncio de lançamento do OpenSSH 5.6 :
- Kill channel when pty allocation requests fail. Fixed stuck client if the server refuses pty allocation (bz#1698)
bz#1698
parece ser uma referência a um relatório registrado no Bugzilla “OpenSSH portátil” .
A partir da mensagem de check-in de OpenSSH clientloop .c rev 1.234 :
improve our behaviour when TTY allocation fails: if we are in RequestTTY=auto mode (the default), then do not treat at TTY allocation error as fatal but rather just restore the local TTY to cooked mode and continue. This is more graceful on devices that never allocate TTYs.
If RequestTTY is set to "yes" or "force", then failure to allocate a TTY is fatal.