Como eu poderia desligar um host remoto, na minha rede através do ssh, com um host local?

6

A questão é simples.
Qual seria o script que eu teria que usar para desligar um computador na minha rede através do ssh.

Normalmente eu iria para a linha de comando e:

ssh desktop

delik@desktop's password: 

delik@desktop:~$ sudo shutdown -P 0

Para ligar, criei um arquivo e escrevi:

wakeonlan xx:xx:xx:xx:xx:xx

E deu o bit executável

Dessa forma, basta clicar duas vezes. Eu seria capaz de fazer o mesmo com o desligamento?

    
por DeLiK 21.09.2012 / 10:43

2 respostas

6

Assumindo que o usuário que você usará em remote.host é o mesmo usado em local.host
Para fazer isso você tem que primeiro autorizar seu local.host para se conectar a você remote.host sem senha.
Para fazer isso, você deve: (como descrito aqui)

Etapa 1: instalar o ssh

sudo apt-get install ssh

Passo 2: Crie chaves públicas e privadas usando ssh-key-gen em local-host

No seu host local, digite este comando:

ssh-keygen

Você deve salvar a chave gerada em:

/home/yourusername/.ssh/id_rsa

Pressione enter duas vezes para deixar a frase secreta vazia.

Your identification has been saved in /home/yourusername/.ssh/id_rsa.
Your public key has been saved in /home/yourusername/.ssh/id_rsa.pub.
The key fingerprint is:
XX:XX:XX:xX:XX:xX:XX:XX:XX:XX:XX:XX:XX:XX yourusername@local-host

Etapa 3: Copie a chave pública para o host remoto usando ssh-copy-id

yourusername@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
yourusername@remote-host's password:

Now try logging into the machine, with "ssh remote-host", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Observação: o ssh-copy-id anexa as chaves ao /home/yourusername/.ssh/authorized_key do host remoto

Etapa 4: faça o login no host remoto sem digitar a senha

ssh remote-host
[email protected]:~$

Acesso ao host remoto sem senha. Sucesso!

Agora você precisa ser capaz de executar o sudo desligamento -P 0 sem senha .

Modifique o / etc / sudoers no remote.host com visudo

Dessa forma, o usuário " yourusername " pode executar o comando shutdown sem nenhuma senha solicitada.
Entre para o host remoto.

ssh remote.host

Executar:

sudo visudo

Ao executar visudo, isso leva a editar / etc / sudoers.
Adicionando a linha abaixo a esse arquivo.

yourusername ALL = NOPASSWD: /sbin/shutdown

Feito isso, volte para o seu local.host Crie um novo arquivo vazio e cole esta linha, modificando o nome do remote.host

ssh remote.host sudo shutdown -P 0

Salve e feche, vá para o seu Properties deslize para Permissions, e tique o execute este arquivo como um programa

Script concluído!

    
por DeLiK 21.09.2012 / 14:04
-1

Você pode usar uma conta de usuário com um arquivo de chaves em vez de uma senha (para que você não precise digitar a senha para efetuar login). Você também pode dar ao usuário um "shell padrão" que não seja bash ou sh, mas "shutmedown.sh" ou algo assim, que executará seu código de desligamento.

    
por mene 21.09.2012 / 11:06