web-dev-qa-db-ja.com

SSH経由でファイルをリモートで編集するにはどうすればよいですか?

Ssh経由でアクセスできるサーバーにあるファイルを編集する必要があります。

私は自分のワークステーションでカスタマイズされた vim でこれらのファイルを編集したいと思います(リモートサーバーのvim設定を変更する権限がありません)。 sublime text またはその他のGUIエディターでファイルを編集したい場合があります。

もちろん、これらのファイルをダウンロードしてローカルで編集し、サーバーにアップロードすることもできます。よりエレガントな解決策はありますか?

92
Loom

これを行うには、sshfsを使用してリモートフォルダーをファイルシステムとしてマウントします。これを行うには、まずいくつかの前提条件があります。

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

次に、マウントプロセスを実行します。

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

この後、マウントされたフォルダーに移動し、独自にカスタマイズしたローカルのvimを使用します。

70
shivams

次のようにscpを使用して行うことができます。

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

絶対パスを正しく解決するために必要なサーバーとパスの間の2つのスラッシュ//に注意してください。 (最初のスラッシュは構文ですが、2番目のスラッシュは通常どおりリモートユーザーのルートディレクトリを指定します。ホームディレクトリから開始するには、[:port]/~/path/to/file.txtを実行します。)[:port]はオプションです。

これはvimの netrw.vim 標準プラグインによって処理されます。他のいくつかのプロトコルがサポートされています。

106
FloHimself

Vimの設定を編集する権限がないと言うときの意味によっては、サーバー上でVimを希望どおりに使用する方法があるかもしれません。ユーザー.vimrcを変更することはできませんが(たとえば、共有ユーザーとしてログインしているため)、引き続きファイルを作成できます。たとえば、Loom.vimrcというファイルとして作成します。次に、-uスイッチを使用してVimを呼び出します。

vim -u ~/Loom.vimrc file_to_edit

その後、エイリアスを使用することもできます:alias vim='vim -u ~/Loom.vimrc'を使用すると、通常の方法でVimを使用でき、カスタム.vimrcファイルがロードされます。このエイリアスはログアウト後も保持されないため、カスタマイズされたVimを誤って他のユーザーが使用することを心配する必要はありません。

6
Tom Potts

編集するファイルの数と種類に応じて、これはここで実行したいことではないかもしれませんが、言及する価値があると思います。リモートサーバーでファイルを編集する必要があるが、自分のワークステーションにあるすべてのものを使用したい場合は、何らかの Revisionの使用を検討することをお勧めします。マシンのControl システム。こうすることで、選択したソフトウェアを使用して自分のマシンのローカルコピーを変更し、変更をコミットして、宛先マシンのローカルコピーを更新できます。使いやすいソフトウェアでファイルを編集するだけでなく、各ファイルに関連する変更履歴を追加するという付加価値があります。これは常に優れています。

念のために Revision Control Software のリストを示します。

2
jimm-cl

ポッツ氏の回答をさらに詳しく説明します。上記を実行して、次のようなものを.bash_profile(またはシェルが使用するもの)に追加することもできます。

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

ここで、LoomはあなたがログインしているoriginalユーザーIDです。

共有アカウントとしてログインしている場合(個人アカウントではなく、Sudoを使用している場合)、Von Neumanがあなたの魂を憐れんで失ってしまうかもしれません。

私はこれをコメントに入れたでしょうが、コードをフォーマットすることはまったくできませんでした。

1
Petro

Vimセッションが既に実行されている場合は、

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

前の:silentPress Enter to Continueメッセージを抑制します

そして

e scp://user@myserver[:port]//path/to/file.txtは、メモファイルを編集するためのExモードコマンドです。

Windows 10で実行されているBitVise SSHDでテストされ、Ubuntu 16.04で実行されているVIMを使用して

1
alpha_989