web-dev-qa-db-fra.com

Comment éditer des fichiers à distance via ssh?

Je dois éditer certains fichiers placés sur un serveur que je pourrais atteindre via ssh.

Je préférerais éditer ces fichiers en --- vim sur mon poste de travail (je n'ai pas le droit de modifier les paramètres vim sur le serveur distant). Parfois, je voudrais éditer un fichier avec sublime text ou un autre éditeur GUI.

Bien sûr, je peux télécharger ces fichiers, les modifier localement et les télécharger à nouveau sur le serveur. Existe-t-il une solution plus élégante?

92
Loom

Pour ce faire, montez le dossier distant en tant que système de fichiers à l'aide de sshfs. Pour ce faire, d'abord quelques pré-requis:

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

Maintenant, faites le processus de montage:

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

Après cela, allez simplement dans le dossier monté et utilisez votre propre vim personnalisé local.

70
shivams

Vous pouvez le faire via scp comme ceci:

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

Remarquez les deux barres obliques // entre le serveur et le chemin, ce qui est nécessaire pour résoudre correctement le chemin absolu. (La première barre oblique est syntaxique, tandis que la deuxième barre oblique spécifie le répertoire racine de l'utilisateur distant, comme d'habitude. Pour commencer au répertoire personnel, vous feriez [:port]/~/path/to/file.txt.) [:port]est facultatif.

Ceci est géré par le plugin standard de vim's netrw.vim . Plusieurs autres protocoles sont pris en charge.

106
FloHimself

Selon ce que vous voulez dire lorsque vous dites que vous n'avez pas le droit de modifier les paramètres Vim, il peut y avoir un moyen d'utiliser Vim sur le serveur comme vous le souhaitez de toute façon. Si vous ne pouvez pas changer votre utilisateur .vimrc (Parce que vous vous connectez en tant qu'utilisateur partagé, par exemple) mais vous pouvez toujours créer des fichiers, créez-le comme un fichier appelé, par exemple, Loom.vimrc puis appelez Vim à l'aide du commutateur -u:

vim -u ~/Loom.vimrc file_to_edit

Vous pouvez même alors utiliser un alias: alias vim='vim -u ~/Loom.vimrc' Vous permettra d'utiliser Vim de la manière habituelle, et il chargera toujours votre fichier .vimrc Personnalisé. Cet alias ne persistera pas après votre déconnexion, vous n'avez donc pas à vous soucier que quelqu'un d'autre utilise accidentellement votre Vim personnalisé.

6
Tom Potts

Selon le nombre de fichiers et le type de fichiers que vous prévoyez de modifier, ce n'est peut-être pas exactement ce que vous voulez faire ici, mais je pense que cela mérite d'être mentionné. Si vous devez éditer des fichiers sur un serveur distant, mais que vous souhaitez utiliser tout ce que vous avez dans votre propre poste de travail, alors vous voudrez peut-être commencer à penser à utiliser une sorte de Révision Contrôle système dans vos machines. De cette façon, vous pouvez modifier vos copies locales sur votre propre machine à l'aide du logiciel de votre choix, valider les modifications, puis simplement mettre à jour les copies locales dans la machine de destination. En plus d'éditer les fichiers avec n'importe quel logiciel avec lequel vous vous sentez à l'aise, vous avez la valeur ajoutée d'avoir un historique des changements lié à chaque fichier, ce qui est toujours bien.

Voici une liste de Revision Control Software , juste au cas où.

2
jimm-cl

Pour développer la réponse de M. Potts: Vous pouvez également faire ce qui précède, puis mettre quelque chose comme ça dans .bash_profile (ou tout ce que votre Shell utilise):

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

où Loom est votre original ID utilisateur sous lequel vous vous connectez.

Si vous vous connectez en tant que compte partagé (et non pas un compte individuel, alors Sudo est en cause, alors Von Neuman peut avoir pitié de votre âme car vous êtes perdu.

J'aurais mis cela dans un commentaire, mais je n'ai pas pu du tout formater le code.

1
Petro

Si vous avez déjà une session vim en cours d'utilisation

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

Le :silent en face supprimera le Press Enter to Continue message

et

e scp://user@myserver[:port]//path/to/file.txt est la commande du mode Ex pour modifier le fichier de remnote.

Testé avec BitVise SSHD fonctionnant sous Windows 10 et utilisant VIM fonctionnant sur Ubuntu 16.04

1
alpha_989