Estou executando o seguinte comando sobre ssh em um ambiente de teste, como root:
ssh <remote_srv> "apt-get autoremove"
No meu sshd_config, tenho "PermitRootLogin sem senha" e adicionei o id_rsa.pub da raiz ao arquivo allowed_keys no servidor remoto.
No entanto, recebo os seguintes erros:
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Eu procurei isso nas páginas de manual do ssh, mas não consegui entender a explicação sobre pseudo-termos e ttys.
Existe alguém que possa explicar os erros acima? Eu acho que é uma opção que falta, mas qual?
Ambas as plataformas são o Ubuntu 14.04 LTS.
A solução de Alex suprime erros, e ele quase acertou a causa, mas não permite que você responda a nenhuma pergunta (o que é bom quando você preseed as respostas e está sendo executado em um script, mas é realmente irritante quando você está tentando novos pacotes ) A questão central é uma interação entre as suposições feitas pelos vários frontends do ssh e do debconf.
Vamos começar com ssh. O ssh assume que, quando você não especifica um comando remoto, deseja um pty na extremidade remota e especifica um controle remoto (o que funciona notavelmente bem 90% do tempo, mas não este). Isso pode ser substituído pela
-t
opção que força um pty ou pela-T
opção que não o força (ou pelas opções correspondentes do arquivo de configuração). Além disso, ao usar um pty, aTERM
variável de ambiente é copiada (exceções podem ser aplicadas à documentação da verificação para obter detalhes completos e formulário oficial de inscrição em sorteios). Observe também que a-x
opção desativa o encaminhamento X11 e o-X
habilita.O próprio Debconf não possui requisitos de interatividade (por design), mas os vários front-end possuem, e cada um tem requisitos diferentes.
Eu acredito que o frontend mais bonito é o gnome (também existe um front end do ked que eu não consegui trabalhar). O frontend do gnome (e o kde também) requer algumas bibliotecas não padrão e um servidor X11; portanto, a linha de comando para forçar o frontend do gnome (depois que as bibliotecas apropriadas estiverem instaladas) seria
ou se você prefere o kde
O frontend da caixa de diálogo (o padrão) requer um pty e um terminal com um nível mínimo de funcionalidade especificado na variável TERM (na prática, isso é qualquer coisa com uma descrição terminfo completa, exceto dumb).
ou
o frontline do readline possui requisitos menos rigorosos e funcionará com terminais burros, mas precisará de um pty.
O frontend do editor depende de um editor que tenha requisitos específicos, dependendo do editor.
O front-end não interativo não possui requisitos, mas não faz nenhuma pergunta (que pode ou não ser o que você deseja).
fonte
ssh -t
para mais detalhes e outras opções, consulte a página de manual do ssh. Leia novamente o segundo parágrafo desta resposta.