Saya pikir ini lebih berkaitan dengan bagaimana opsi semakin diurai oleh shell. Misalnya, ini berfungsi:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
Ini memiliki masalah yang sama dengan perintah Anda:
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
Jika Anda mengaktifkan -vperalihan ke sshAnda dapat melihat apa yang terjadi:
Perintah 1:
debug1: Mengirim perintah: / bin / sh -c "cd / boot && ls -l"
Perintah 2:
debug1: Mengirim perintah: / bin / sh -c cd / boot && ls -l
Biasanya ketika mengirim perintah melalui sshAnda harus memberi perhatian khusus pada kutipan dan bungkus kutipan dalam tanda kutip karena berbagai lapisan menghapusnya. Juga jangan repot mengirim/bin/sh .
Anda dapat melakukan hal yang sangat berguna setelah Anda memahami kutipan sshseperti berikut ini. Ini akan menjalankan perintah pada server jauh tetapi mengumpulkan hasil dalam file secara lokal pada sistem tempat Anda menjalankan sshperintah:
$ ssh root@server 'free -m' > /tmp/memory.status
atau ini, tempat Anda menempatkan direktori pada server jarak jauh dan membuatnya di sistem lokal:
$ ssh remotehost 'tar zcvf - SOURCEDIR' | cat > DESTFILE.tar.gz
Referensi
ssh root@server /bin/sh -c "ls -l /boot"?