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 -v
peralihan ke ssh
Anda 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 ssh
Anda 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 ssh
seperti berikut ini. Ini akan menjalankan perintah pada server jauh tetapi mengumpulkan hasil dalam file secara lokal pada sistem tempat Anda menjalankan ssh
perintah:
$ 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"
?