Com o primeiro, não há tty
para ssh
, pois stdin
não está conectado ao terminal, é um arquivo aqui. Na verdade, se eu tentar executar um comando similar (no Debian), recebo o seguinte erro:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Para que funcione, você pode fazer algo como:
ssh -tt 192.168.1.100 <<EOF
sudo -S id
password
EOF
Embora isso não seja uma boa ideia, uma vez que a senha estará em texto simples.
Atualizar
Eu me deparei com uma solução fácil para isso que evita codificar a senha em texto simples, você pode usar um programa gráfico para digitar a senha:
ssh -X 192.168.1.100 <<EOF
SUDO_ASKPASS=/usr/lib/ssh/x11-ssh-askpass sudo -A id
EOF
É claro que o programa ssh-askpass
deve ser instalado no local indicado e você deve estar executando uma sessão X na máquina em que está trabalhando. Existem algumas variações no programa ssh-askpass
que também deve funcionar (versões do Gnome / KDE). Além disso, um programa gráfico de substituição de sudo
como gksu
ou kdesudo
deve fazer o trabalho também.