Nukino's memorandum

とあるソフト屋の覚え書き

vimからSSH/SCP接続してみる

ヘルプを探ってるとvimからSSH/SCP接続出来ることを知ったので、試してみた。

クライアントPC
Windows XP + vim 7.3.393(Kaoriya版)
サーバーPC
Ubuntu 11.10

で確認。「サーバー側にvim入れてSSHクライアント上で動かせば良いんじゃね?」という突っ込みは禁止www

サーバーPCにSSHサーバをインストール

サーバーPCのコマンドラインで

sudo apt-get install ssh

とする。別にOpen SSHなどでも構わない。

クライアントPCにSSHクライアントをインストール

SSHクライアントはPuTTY 0.60 ごった煮版 2007年8月6日版を使用した。

ダウンロードはPuTTY ごった煮版から行う。

本家の方がバージョンは新しい。Windows 7で使う ならこちらの方がいいかも。

インストールする場合にはデフォルトのフォルダではなくC:\PuTTyなどの空白を含まないパスにインストール することを推奨(理由は後述)

$MYVIMRCを編集

$MYVIMRC(ユーザーvimファイル。一般的には$HOME/_vimrc$HOME/.vimrcなど)を編集し、以下の記述を追 加(sftpは不要かな?)。

文字列を’”‘(ダブルクォーテーション)で括ってあるのは試してる際にそうすると何故か動き出したからだが、 今試すと”’“(シングルクォーテーション)で括っても動くことが判明したので特に意味無しかも1

実行ファイルのパスに空白が入ってると上手く動かない。(ダブルクォーテーションで括っても駄目。 g:netrw_list_cmdを直接指定すると、最初のファイル一覧は取得できる)

既にPuTTyを空白の入ったフォルダ(C:\Program Files\PuTTyなど)にインストールしてしまってる人は

  1. 空白の入らないフォルダ(C:\PuTTyなど)に再インストール
  2. PuTTyのあるインストールフォルダにPATHを通して、g:netrw_scp_cmdなどに実行ファイル名のみ指定
  3. 空白の入らないフォルダにジャンクション/シンボリックリンクする
  4. 空白の入らないフォルダにPuTTyフォルダの中身をコピーする

のうちお好きなのをどうぞ。

SSH接続を公開鍵認証に変更

このままだとSCP/SSH接続しようとした際にユーザー名/パスワード入力の部分で止まる(vimからプロンプトが出 ない)。

そこで、公開鍵認証+pageantでパスワード認証を自動化する(サーバーが1つしかないならplink.exeに-pwオプ ション付けとくというのでもいいけど)。

具体的な設定方法は公開鍵認証でsshを安全に使うを参照。

上記のサイトを読めばちゃんと書いてあるが、公開鍵をサーバーに設置する際[公開鍵の保存]ボタンで保 存したファイルを使っちゃ駄目です。PuTTy鍵生成ダイアログ上部のテキストを貼り付けませう←ここで少し 嵌まった。

上記サイトでは/etc/ssh/sshd_configの編集方法があまり詳しく載ってないので補完しておくと(大体分かると思うけど)

33行目の”#”を外す

AuthorizedKeysFile      %h/.ssh/authorized_keys

パスワード認証を無効化するには55行目のコメントを外してyes→no

PasswordAuthentication no

としてサーバー上で

/etc/init.d/ssh restart

とすれば設定が有効化します。

pageantで作った秘密鍵を追加しとくのを忘れずに。

使い方

クライアント上のvimで

:e scp://user@192.168.0.4/

とかするとサーバーのuserホームディレクトリの内容がダーっと表示されます。scpのパスは

scp://[user@]machine[[:#]port]/path

と指定できるみたいです。(pathの末尾が”/”だとディレクトリを意味する)
但しpathは指定したuserのホームディレクトリからの相対パスになるので、絶対パスにしたい場合は

:e scp://root@192.168.0.4//etc/ssh/

とか

:e scp://root@192.168.0.4//etc/ssh/sshd_config

みたいに先頭に”/”を付けます。

あと詳しい使い方はvimで

:h netrw

参照。

感想

別件でやりたいことがあって調べてた際に見つけて試してみたけど、vimって色んな事が出来ることを再認識。

ディレクトリ移動とかは1回ずつSSH接続しに行くみたいなので、動作はかなりもっさりしている。

サーバーにvimを入れられない環境なら便利かもしれないが、自宅で使う場合はサーバー側にvim入れちゃった方 が速くてスマート。


  1. 実行ファイルのパスに空白が入ってるときは’”’で括らないと駄目。とかそういうことなのかも

Comments