Me preguntaba si alguien puede ayudarme con mi guión.
Tengo 2 servidores. Llamémoslos Servidor A y Servidor B. El Servidor B tiene un software instalado que me gustaría ejecutar desde el Servidor A. No puedo instalar el software en el Servidor A.
Tengo que permitir que los usuarios ejecuten otro software en el Servidor A, que luego llamará a un script para llamar al software en el Servidor B para ejecutar un comando.
Entonces creé un usuario llamado transferencia en el servidor A y el servidor B. Permití que la transferencia pudiera ingresar por ssh al servidor B sin necesidad de contraseña usando claves de autenticación.
Entonces, ahora desde el servidor A estoy intentando realizar una transferencia, hacer ssh al servidor B y ejecutar el comando.
Esto funciona perfectamente bien como root. Sin embargo, cuando soy yo o cualquier otro usuario, me pide una contraseña para el usuario de "transferencia" en el Servidor B.
Aquí está la secuencia de comandos:
#!/bin/bash
su transfer -c 'ssh transfer@ServerB script $1 $2'
Respuesta1
Cree un script de shell que ejecute el comando remoto:
% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw
Pruebe este script ejecutándolo como transfer
usuario:
% /home/transfer/exec-remote-sw arg1 arg2
Ahora como root, cree un grupo de Linux (p. ej. transfer
) y luego agregue todos los usuarios que necesiten acceso a esta funcionalidad al grupo de Unix:
% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN
Como root, agregue lo siguiente al /etc/sudoers
archivo ejecutando visudo
:
%transfer serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw
Pruebe iniciando sesión como uno de los usuarios del grupo de transferencia y ejecutando:
% sudo -u transfer /home/transfer/exec-remote-sw arg1 arg2
Para simplificar esto para sus usuarios, pídales que agreguen lo siguiente a sus archivos .profile (o agréguelo a /etc/profile para todos):
alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"
Luego los usuarios pueden escribir:
% svrbexec arg1 arg2
y el proceso remoto debería ejecutarse con sus dos parámetros pasados.