Sua pergunta é um pouco incerta. Parece que você está usando uma chave SSH, mas a chave SSH é protegida por uma frase secreta. Mas, na verdade, ele também deve pedir essa frase secreta também quando você estiver conectado diretamente.
O que eu faria:
- Crie um usuário especial (vamos chamá-lo de 'runscripts') na máquina A que é usada para executar os scripts.
- Para este usuário, crie uma chave SSH que não seja criptografada por uma frase secreta.
- Configure o sudo para permitir que usuários "normais" na máquina A executem esses scripts com os privilégios de usuário do usuário 'runscripts' e sem precisar digitar uma senha.
Aqui está um exemplo completo de como configurar isso:
Crie um novo usuário que não pode estar logado (no meu sistema isso também criará um novo grupo com o mesmo nome que eu usarei no seguinte):
# adduser --disabled-password runscripts
Torne-se este usuário e crie uma chave ssh. Não defina uma frase secreta na chave, basta pressionar enter no prompt da frase secreta.
# su runscripts
$ ssh-keygen
Adicione a chave pública (em ~ / .ssh / id_rsa.pub) às authorized_keys na máquina de destino (máquina B em seu exemplo), em seguida, tente o login por chave SSH (que também adicionará a chave pública remota para o known_hosts, para que ele não seja solicitado novamente mais tarde).
$ ssh [email protected]
De volta à máquina A: adicione a (s) conta (s) do usuário normal ao grupo:
# adduser kju runscripts
Crie algum script que use a chave SSH e faça algo em B:
# cat > /usr/local/bin/script1
#!/bin/sh
echo -n "Running as "
whoami
ssh remoteuser@machineB whoami
^D
# chmod +x /usr/local/bin/script1
Por fim, permita que os usuários em runcripts de grupo executem esse script como usuário em runcript sem uma senha. Esta é a linha do / etc / sudoers:
%runscripts ALL=(runscripts) NOPASSWD:/usr/local/bin/script1
Agora, como um dos usuários em runcripts de grupo, tente executar o script:
$ sudo -u runscripts /user/local/bin/script1
Running as user runscripts
remoteuser
$
Como você pode ver nesta saída, o script foi executado como scripts de usuário. Em seguida, ele efetuou login na Máquina B como usuário 'remoteuser' e executou o comando 'whoami' (que, é claro, retornou 'remoteuser').
Fazer isso dessa forma tem o benefício de ninguém poder roubar a chave SSH (desprotegida) porque ela só é acessível como scripts de usuário, mas as pessoas só podem executar os scripts predeterminados com privilégios de usuário.