Descobri que poderia obter uma sessão ssh não baseada em tty para funcionar usando:
$ ssh username@servername /bin/bash -i
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
username@servername:~$
Eu acho que neste caso o erro ioctl é esperado, porque eu estou começando uma sessão interativa em algo que não tem um tty. Muitas coisas têm problemas nesta sessão (o termo env env não está definido), mas eu consegui fazer alguns problemas básicos e descobri isso:
#View a process list with parent process details
ps -axfo pid,uname,cmd | grep badservice | wc -l
27917
Basicamente, descobrimos que um dos nossos serviços tinha mais de 27900 processos rodando sob seu nome de usuário, quando comparamos isso com o bom servidor
$ salt 'server*' cmd.run 'ps -aux | grep badservice | wc -l'
server.good:
3
server.bad:
27918
Provavelmente isso estava causando algum tipo de esgotamento de recursos relacionado a ptys. O serviço ruim foi interrompido e eu matei todos os processos restantes para esse usuário usando sudo kill -u badservice
. Depois disso, o SSH começou a funcionar como esperado novamente!