Eu encontrei esta pergunta que explica como editar um arquivo remoto com o vim usando:
vim scp://user@myserver[:port]//path/to/file.txt
É possível fazer isso como root (via sudo
) no host remoto?
Eu tentei criar um arquivo com permissões de root no host remoto e editá-lo com os itens acima. O Vim pode ver o conteúdo, editá-lo e salvá-lo, mas nada muda no host remoto (provavelmente porque o vim está apenas salvando seu arquivo temporário e depois entregando ao scp para colocar de volta?)
Ao fazer isso com um arquivo salvo pelo meu usuário, ele se comporta conforme o esperado.
Meu SSH usa uma chave para autenticar e o servidor remoto possui NOPASSWD para acesso ao meu sudo
Essa pergunta é semelhante, mas a única resposta com votos usa fantoches, que definitivamente não é o que eu quero usar.
Edit: Em resposta ao comentário de @ drewbenn abaixo, aqui está o meu processo completo de edição:
vim scp://nagios//tmp/notouch
Onde /tmp/notouch
o arquivo pertence ao root, vejo o vim mostrar rapidamente
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Isso desaparece automaticamente para gerar uma tela preta vazia com o texto
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Pressionar enter permite editar o arquivo
O salvamento exibe o mesmo tipo de comando scp do início, que desaparece rápida e automaticamente (é difícil lê-lo a tempo, mas os arquivos scp e / tmp / ... estão definitivamente lá)
.vimrc
arquivo #
ssh -t host sudo vim file
?
ssh
no servidor e edite o arquivo lá (comvisudo
ou o que for). Qualquer outra coisa tem implicações de segurança.