Uma maneira de fazer isso seria usar a autenticação baseada em chave para a conexão ssh.
No computador de envio, crie um par de chaves ssh público / privado:
ssh-keygen -f .ssh/notify-key -C "notify-send SSH key" -b 2048 -t rsa
O programa pedirá uma senha; simplesmente aperte enter duas vezes para criar uma chave SSH sem uma frase secreta.
Isso gerará um par de arquivos, notify-key
e notify-key.pub
. Copie a chave pública para o servidor de recebimento via ssh-copy-id -i .ssh/notify-key foo@receiver
OBSERVAÇÃO Isso permitirá que qualquer pessoa que tenha acesso a notify-key
faça login em receiver
com suas credenciais de usuário e nenhuma verificação de senha, o que é um pouco mais de acesso do que você provavelmente deseja. feche um pouco.
Em receiver
, edite ~foo/.ssh/authorized_keys
; você verá uma linha dizendo algo como
ssh-rsa AAAAB3NzaC1kc3MAAACBAP6Mmqm+ylUEQa+NRassh-dss AAAAB3NzaC1kc3MAAACBAP6Mmqm+ylUEQa+NRa {.......} MuieClE1nhb33EgQ== notify-send SSH key
Para apertar isso, altere a linha para adicionar o seguinte:
no-pty,no-port-forwarding,no-X11-forwarding from=sender ssh-rsa AAAAB3Nz...
Isso evitará que essa chave específica seja usada para encaminhamento de porta, encaminhamento X11, PTYs (como um shell de login útil) ou seja usado em qualquer lugar diferente de sender
.
Depois de ter isso, você deve conseguir executar o comando
ssh -i ~/.ssh/notify-key foo@receiver notify-send "Can you see this?"
e usá-lo em scripts, desde que o ID do usuário que está executando o script tenha acesso de leitura a notify-key
. Eu recomendo que você defina seus direitos de acesso para 0600 e armazene em algum lugar seguro.