Em sua primeira tentativa, destaquei as partes que são strings com aspas duplas no shell local. Nenhuma aspa dupla é passada para o shell remoto, quanto mais para sed.
ssh root@$srvname "sed -i 's/VNCSERVERARGS[6]="-geometry 1920x1080"/VNCSERVERARGS[6]="-geometry 1152x864"/g' /etc/sysconfig/vncservers"
^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Na sua segunda tentativa, este é o comando shell remoto:
sed -i 's/VNCSERVERARGS[6]="-geometry 1920x1080"/VNCSERVERARGS[6]="-geometry 1152x864"/g' /etc/sysconfig/vncservers
Você obteve o shell citando corretamente, mas [6]
provavelmente não é o que você pretendia: corresponde apenas a VNCSERVERARGS6=…
. Se você quiser combinar os colchetes literalmente, você precisa de uma barra invertida antes do colchete de abertura.
sed -i 's/VNCSERVERARGS\[6]="-geometry 1920x1080"/VNCSERVERARGS\[6]="-geometry 1152x864"/g' /etc/sysconfig/vncservers
No shell remoto, as barras invertidas estão em uma sequência de aspas simples e, portanto, são interpretadas literalmente. No shell local, as barras invertidas estão em uma cadeia de aspas duplas; em geral, eles devem ser duplicados, embora \[
em uma sequência de aspas duplas seja interpretada como \[
de qualquer maneira.
ssh root@$srvname "sed -i 's/VNCSERVERARGS\[6]=\"-geometry 1920x1080\"/VNCSERVERARGS\[6]=\"-geometry 1152x864\"/g' /etc/sysconfig/vncservers"
Lembre-se que o ssh invoca um comando shell no lado remoto, então você precisa de dois níveis de citação: um para o shell local e outro para o shell remoto. Geralmente, é mais fácil colocar aspas simples em torno do comando remoto e organizar o comando sem aspas simples.
ssh root@$srvname 'sed -i "s/VNCSERVERARGS\[6]=\"-geometry 1920x1080\"/VNCSERVERARGS\[6]=\"-geometry 1152x864\"/g" /etc/sysconfig/vncservers'
Como alternativa, monte os arquivos remotos com sshfs e trabalhe neles sem ter que se preocupar com o fato de eles serem remotos.
mkdir ~/net/srvname
sshfs root@srvname ~/net/srvname
sed -i 's/VNCSERVERARGS\[6]="-geometry 1920x1080"/VNCSERVERARGS\[6]="-geometry 1152x864"/g' ~/net/srvname/etc/sysconfig/vncservers