Efetuando login como usuário root em uma máquina remota usando SSH

1

Meu problema é semelhante ao este , estou tentando para automatizar a parte em que posso acessar a máquina remota e executar um comando como superusuário. Ele funciona bem até que se conecte, como daqui: -

$ ssh-keygen -t rsa -b 2048

para

$ ssh-copy-id id@server
id@server's password:
$ ssh id@server
id@server:~$  

A sobrecarga para mim é que eu posso perguntar ao usuário a senha da máquina remota apenas uma vez (enquanto gera chaves ssh), e depois disso enquanto estiver executando um comando como super usuário ele não deve pedir senha novamente. um comando como abaixo: -

sudo su

Existe alguma maneira de fazer isso? porque eu tentei salvar a senha como variável e, em seguida, substituindo o valor como: -

echo -n "Enter password > "
read passwd
sshpass -p $username ssh -o StrictHostKeyChecking=no $username@$server sudo some_application &

Ele solicitará a senha onde não posso substituir o valor da variável que declarei.

    
por Aseem Yadav 14.04.2016 / 09:43

2 respostas

2

Você já tentou usar expect ?

script de login simples escrito em esperar:

#!/usr/bin/expect
set timeout 9
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
log_user 0

if {[llength $argv] == 0} {
  send_user "Usage: scriptname username \'password\' hostname\n"
  exit 1
}

send_user "\n#####\n# $hostname\n#####\n"

spawn ssh -q -o StrictHostKeyChecking=no $username@$hostname

expect {
  timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
  eof { send_user "\nSSH failure for $hostname\n"; exit 1 }
  "*assword"
}

send "$password\r"

expect {
  timeout { send_user "\nLogin failed. Password incorrect.\n"; exit 1}
  "*\$ "
}

send_user "\nPassword is correct\n"
send "exit\r"
close

Exemplo de uso:

./script_name user_foo pass_bar hostname.com

Ele só tentaria fazer o seu login e fornecer qualquer mensagem de erro caso algo desse errado e, caso contrário, diria "A senha está correta" e, em seguida, sairá da sessão.

Alguns dos parâmetros dependerão do sistema ao qual você está se conectando. Além disso, usar esperar significa que você sabe qual será a saída ao efetuar login e executar comandos.

Este tutorial abordará suas necessidades

    
por 14.04.2016 / 13:25
0

Você realmente copiou sua chave de pub para o arquivo .ssh / authorized_keys do root? Eu sempre faço "chmod -R go = /root/.ssh" depois, também verifico a propriedade.

Se você tiver o selinux em execução, você terá que "restorecon" no arquivo authorized_keys e também no diretório .ssh.

E se você quiser o ssh como root, você precisa verificar o / etc / ssh / sshd_config e recarregar o sshd.

    
por 14.04.2016 / 23:18