execute su -c sobre ssh

10

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

ssh remote-server su -c dmidecode

mas isso obviamente falha com o erro:

padrão em deve ser um tty

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

Aaron
fonte
Eu também gostaria de sugerir olhando para usar sudo em vez de "su -c"
wfaulk
1
como eu especificado "Eu não pode usar sudo"
Aaron
Eu adoraria que houvesse mais informações sobre o porquê "eu não posso usar o sudo".
dannysauer
@dannysauer Nem todos os sistemas operacionais o possuem. Estou aqui tentando resolver o mesmo problema, exceto que não estou no RedHat como OP. Estou em uma variante unix sem sudo. Estou curioso para saber por que o OP não pode usá-lo no RedHat, mas sou grato de qualquer maneira que a pergunta tenha sido feita.
Loduwijk 22/10/19
O sudo baseia-se em todas as variantes do UNIX que eu conheço, mas concordarei que ele não está instalado (ou configurado) em todas elas. Fiquei realmente mais curioso por que não estava configurado lá (acho - já faz alguns anos). : D
dannysauer 24/10/19

Respostas:

13

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

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

Você também pode considerar permitir que o root seja ssh diretamente. Se você estiver usando autenticação de chave pública, isso poderá ser mais seguro, pois você não passará uma senha. Se você decidir fazer isso, considere bloquear 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 verifique se UsePAMnão está desativado emsshd_config

geocar
fonte
2
Algum motivo para você incluir dois -ts no seu exemplo?
Wfaulk #
2
De acordo com a página do manual, várias opções -t "alocação de força tty, mesmo se ssh não tem tty local"
Heath
Isso não funciona para mim no Fedora. Ele permite que o script solicite minha senha, mas minha senha é exibida como texto sem formatação e, quando pressiono enter, ele simplesmente trava.
Cerin
@ Chris, esse é um problema diferente. Tente fazer uma nova pergunta.
geocar
@Heath obrigado pelo comentário sobre a dupla -t, que funciona para mim no CentOS
Paul Sheldrake
0

Você não pode simplesmente fazer login no servidor remoto como usuário padrão e usar o 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"
Massimo
fonte
3
-1 porque citar o comando não resolverá sua falta de terminal. +1 por sugerir sudo. É uma lavagem.
Wfaulk # 8/09
como eu especificado "Eu não pode usar sudo"
Aaron