Creo que tiene más que ver con cómo el shell analiza las opciones. Por ejemplo, esto funciona:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
Esto tiene el mismo problema que su comando:
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
Si habilita el -v
cambio a ssh
puede ver lo que está sucediendo:
1er comando:
debug1: comando de envío: / bin / sh -c "cd / boot && ls -l"
2do comando:
debug1: comando de envío: / bin / sh -c cd / boot && ls -l
Por lo general, al enviar comandos a través de ssh
, debe prestar especial atención a las comillas y ajustar las comillas dentro de las comillas, ya que las diversas capas las eliminan. Tampoco te molestes en enviar /bin/sh
.
Puede hacer algo muy útil una vez que comprenda la cita de ssh
lo siguiente. Esto ejecutará el comando en el servidor remoto pero recopilará los resultados en un archivo local en el sistema donde ejecutó el ssh
comando:
$ ssh root@server 'free -m' > /tmp/memory.status
o esto, donde alquila un directorio en un servidor remoto y lo crea en el sistema local:
$ ssh remotehost 'tar zcvf - SOURCEDIR' | cat > DESTFILE.tar.gz
Referencias
ssh root@server /bin/sh -c "ls -l /boot"
?