Como faço para editar remotamente arquivos via ssh?

72

Eu tenho que editar alguns arquivos colocados em algum servidor que eu poderia acessar via ssh. Eu preferiria editar esses arquivos em vim personalizado em minha estação de trabalho (não tenho direitos para alterar vim configurações no servidor remoto). Às vezes eu gostaria de editar um arquivo com sublime text ou outro editor de GUI. Claro, eu posso baixar esses arquivos, editá-los localmente e enviá-los de volta ao servidor. Existe uma solução mais elegante?

    
por Loom 12.05.2015 / 11:01

6 respostas

59

Você poderia fazer isso montando a pasta remota como um sistema de arquivos usando o sshfs. Para fazer isso, primeiro alguns pré-requisitos:

# issue all these cmds on local machine
sudo apt-get install sshfs 
sudo adduser <username> fuse

Agora, faça o processo de montagem:

mkdir ~/remoteserv    
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv

Depois disso, basta acessar a pasta montada e usar seu próprio vim personalizado local.

    
por 12.05.2015 / 11:08
70

Você pode fazer isso via scp assim:

vim scp://user@myserver[:port]//path/to/file.txt

Observe as duas barras // entre o servidor e o caminho, o que é necessário para resolver corretamente o caminho absoluto. (A primeira barra é sintática, enquanto a segunda barra especifica o diretório raiz do usuário remoto, como de costume. Para iniciar no diretório inicial, você faria [:port]/~/path/to/file.txt .) [:port] é opcional.

Isso é feito pelo plug-in padrão netrw.vim do vim. Vários outros protocolos são suportados.

    
por 12.05.2015 / 11:08
6

Dependendo do que você quer dizer quando diz que não tem o direito de editar as configurações do Vim, pode haver uma maneira de usar o Vim no servidor da maneira que você quiser de qualquer maneira. Se você não pode alterar seu usuário .vimrc (porque você está logando como um usuário compartilhado, por exemplo), mas você ainda pode criar arquivos, criá-lo como um arquivo chamado, digamos, Loom.vimrc e chamar Vim usando a opção -u :

vim -u ~/Loom.vimrc file_to_edit

Você pode até mesmo usar um alias: alias vim='vim -u ~/Loom.vimrc' permitirá que você use o Vim da maneira usual e ainda carregará seu arquivo .vimrc personalizado. Esse apelido não persistirá depois que você sair, para que você não precise se preocupar com mais ninguém usando acidentalmente seu Vim personalizado.

    
por 12.05.2015 / 17:50
2

Dependendo de quantos arquivos e que tipo de arquivos você está esperando editar, talvez não seja exatamente isso que você quer fazer aqui, mas acho que vale a pena mencionar. Se você tiver que editar arquivos em um servidor remoto, mas quiser usar tudo o que tem em sua própria estação de trabalho, então você pode começar a pensar em usar algum tipo de Controle de revisão do sistema em suas máquinas. Dessa forma, você pode modificar suas cópias locais em sua própria máquina usando o software de sua preferência, confirmar as alterações e, em seguida, apenas atualizar as cópias locais na máquina de destino. Além de editar os arquivos com qualquer software com o qual você se sinta confortável, você tem o valor agregado de ter um histórico de alterações relacionado a cada arquivo, o que é sempre bom.

Aqui está uma lista de Software de Controle de Revisão , apenas por precaução.

    
por 12.05.2015 / 14:30
1

Para expandir a resposta do Sr. Potts: Você também pode fazer o acima, e colocar algo assim em .bash_profile (ou o que seu shell usa):

if [[ "$(who mom loves | awk ' { print $1 }' )" == "Loom" ]]; then 
         alias vim="vim -u ~/.Loom_vimrc"  
         fi  

onde o Loom é seu ID do usuário original no qual você faz login.

Se você está logando como uma conta compartilhada (e não uma conta individual, então sudo suing, então Von Neuman pode ter piedade de sua alma, pois você está perdido.

Eu teria colocado isso em um comentário, mas não consegui o código formatado.

    
por 27.11.2016 / 20:17
0

Se você já tem sessões vim em execução, use

:silent e scp://user@myserver[:port]//path/to/file.txt

O :silent na frente suprimirá a mensagem Press Enter to Continue

e

e scp://user@myserver[:port]//path/to/file.txt é o comando Ex mode para editar o arquivo remnote.

Testado com BitVise SSHD em execução no Windows 10 e usando o VIM em execução no Ubuntu 16.04

    
por 30.05.2018 / 20:31

Tags