execute su -c sobre ssh

8

Estou tentando verificar a versão do BIOS de um servidor por SSH, um comando que requer privilégios de root:

ssh remote-server su -c dmidecode

mas isso obviamente falha com o erro:

standard in must be a tty

Como faço isso funcionar? Não consigo usar o sudo, e quando tento logar como root @ remote-server, ele não aceita a senha que eu uso para o comando 'su'. Estou usando o RedHat Enterprise Linux 4.

    
por aaron 08.10.2009 / 23:14

2 respostas

11

Use -t para forçar o ssh a alocar um tty:

ssh -t -t remote-user su -c dmidecode

Você também pode considerar a permissão de root para ssh diretamente. Se você estiver usando a autenticação de chave pública, isso pode ser mais seguro, pois você não passará uma senha. Se você decidir fazer isso, considere o bloqueio de logins raiz de qualquer lugar, exceto seus endereços IP confiáveis, colocando o seguinte em /etc/security/access.conf :

+ : root : 10.20.30.40
- : root : ALL EXCEPT LOCAL

e certifique-se de que UsePAM não esteja desativado em sshd_config

    
por 08.10.2009 / 23:27
0

Você não pode simplesmente fazer login no servidor remoto como um usuário padrão e usar sudo ?

Você também pode tentar citar o comando a ser executado pelo ssh, como em

ssh remote-server 'su -c dmidecode'

ou

ssh remote-server "su -c dmidecode"
    
por 08.10.2009 / 23:30

Tags