Deseo encontrar un shell one-liner en MacOS que ejecute un comando en una máquina remota a través de SSH con un usuario diferente no Root (digamos, joe
), utilizando un archivo de identidad que sólo joe
puede acceder. El siguiente ejemplo funcionaría cuando el usuario actual ya es joe
:
ssh -i ~/.ssh/id_joe -l joe joehost "whoami"
Pero en mi caso joe
es no al usuario actual en un primer momento. Y ese usuario hace no tienen acceso al archivo de identidad necesario para SSH. Quiero saber cómo puedo "cambiar de usuario" a joe (cuya contraseña es conocida), ejecutar SSH y luego volver a cambiar, todo de una sola vez.
Esta frase sí exactamente lo que quiero pero en Debian 11:
echo -n 'joepass' | su - joe -c 'ssh -i ~/.ssh/id_joe -l joe joehost "whoami"'
(Estoy de acuerdo en que hacer eco de una contraseña es atroz pero la comodidad me importa más que la seguridad por ahora)
Pero el mismo comando da error en MacOS como su: Sorry
presumiblemente por razones de seguridad. Entonces, ¿qué puedo hacer para lograr resultados similares en MacOS?
Estoy abierto a cualquier tipo de solución siempre que se respeten las siguientes restricciones:
- No se puede utilizar
sudo
. Todos los usuarios implicados son no-Root. - No se puede pedir al usuario que introduzca
joe
manualmente. - No se puede usar Esperar.