Encontré esta pregunta que explica cómo editar un archivo remoto con vim usando:
vim scp://user@myserver[:port]//path/to/file.txt
¿Es posible hacer esto como root (vía sudo
) en el host remoto?
Intenté crear un archivo con permisos de root en el host remoto y editarlo con lo anterior. Vim puede ver el contenido, puede editarlo y guardarlo, pero nada cambia en el host remoto (probablemente porque vim solo está guardando su archivo temporal y luego se lo está dando a scp para que lo vuelva a poner).
Al hacer esto con un archivo guardado por mi usuario, se comporta como se esperaba.
Mi SSH usa una clave para autenticar y el servidor remoto tiene NOPASSWD para mi acceso a sudo
Esta pregunta es similar, pero la única respuesta con votos usa títere, que definitivamente no es lo que quiero usar.
Editar: en respuesta al comentario de @ drewbenn a continuación, aquí está mi proceso completo para editar:
vim scp://nagios//tmp/notouch
¿Dónde /tmp/notouch
está el archivo propiedad de root? Veo que vim muestra rápidamente
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Esto desaparece automáticamente para producir una pantalla negra vacía con el texto
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Presionar enter me permite editar el archivo
Al guardar aparece el mismo tipo de comando scp que al principio, que desaparece rápida y automáticamente (es difícil leerlo a tiempo, pero los archivos scp y / tmp / ... definitivamente están ahí)
.vimrc
archivo
ssh -t host sudo vim file
?
ssh
al servidor y edite el archivo allí (convisudo
, o lo que sea). Cualquier otra cosa tiene implicaciones de seguridad.