あかり描像のブログ

思ったことや学習記録を適当に書いていきます。お気軽にコメントください

SSH 先の Linux を Windows11 上の explorer から見れるようにする

リモートの Linux サーバーを Windows 11 の explorer にマウントする方法を模索しました。

VSCode の Remote-SSH ではリモートサーバー上で開いたディレクトリのツリー構造を可視化してくれますが、それを Windows explore でもやりたいなと思いました。


結論から言うと、Windows explorer から SFTP (SSH File Transfer Protocol) 接続を行うのは厳しくて、WSL2 で Ubuntu を走らせて Nautilus を動かすのが一番早いと思います。

ただし、とある条件の下であれば Windows Explorer にマウントする手段はいくつかあるようです。
そこで、今回は Nautilus による方法とその他の代替案 3 つを、個人的に有用だと思う順に紹介します。

正直この機能は Windows に標準搭載されててほしいレベルです。Microsoft さんよろしく頼みます。もしかしたら既にあるのかもしれませんが。。。

色々分かり次第この記事に追記していきます。
こんな方法あるよっていうのがあったら教えて頂けるとうれしいです。

環境

  • Windows11 Pro 23H2
  • WSL2

方法 4 つ

WSL2 + Nautilus

初っ端から趣旨とはずれますが、一番簡単なので...

サーバーが Linux ならクライアントも Linux の方が結局楽じゃんという身も蓋もない話です。

ただし、あくまで Linux 上の X Window を動かしての話なので、例えば Windows explorerNautilus の間で D&D みたいなことはできません。OS が Windows と WSL でバッファを共有している訳ではないので当然といえば当然ですが、残念。
まぁ、Nautilus を 2 つ開いたらそれらの間では D&D できるので、あんまり問題ではないのですが。いい加減 CUI に慣れたいですね。


デフォルトだと GUI レンダリングがおかしくなるので、まず C:\Users\[ユーザー名]\.wslconfig に以下を追記します。(.wslconfig がない場合は新規作成します。) *1

.wslconfig

[system-distro-env]
WSLG_USE_MSTSC=false
WESTON_RDP_WINDOW_SNAP_ARRANGE=true
WESTON_RDPRAIL_SHELL_LOCAL_MOVE=true

;disable GPU in system-distro
LIBGL_ALWAYS_SOFTWARE=1

な…何を言ってるのかわからねーと思うが、俺も何をしてるのかわからなかった...

remix-yh.net

↑ ここやここに貼ってある WSLg の issue を参考。ソフトウェアレンダリングをオン、つまり GPU を使わせないという事。


さて、.wslconfig を書き換えたら、WSL を再起動し、

wsl --shutdown

適当な Linux ディストリビューションNautilus をインストールします。
ここでは Ubuntu 22.04.3 LTS を使うとします。

sudo apt install nautilus -y

これで Nautilus が使えるようになるはずです。

nautilus

Nautilus は標準で SFTP が使え、~/.ssh/config も読み込んでくれるため、かなり使い勝手が良いです。まぁ、Linux ユーザーからしたら何を今更って感じなんですが...

左側ペインに「+ Other Locations」とあるので、それを押し、右下に出てくる「Connect to Server」に

sftp://[ユーザー名]@[ホスト名]

などと書いて「Connect」を押せばばっちぐ~。


SFTP Drive


www.nsoftware.com


公開鍵認証、パスワード認証、どちらでも使えます。

ただし、同時に 2 つ以上のサーバーをマウントするには Professional Edition という有料版が必要になる上、踏み台サーバー (jump server) を超えての SFTP 接続は対応していないっぽいです。


導入自体は上の公式サイトからインストーラーをダウンロードしてくるとよいでしょう。

導入時に名前や所属が訊かれますが、適当でもバレないでしょう。私は出身大学の学生って設定でハンドルネームを設定しました。メアドは空欄でもいけたので、もしかしたら名前すら要らないのかも。

WinFsp + SSHFS-Win

github.com

github.com

公開鍵認証、パスワード認証、どちらも可能。2 台以上の同時マウントも可。
しかし、これも jumpserver を超えての SFTP 接続は厳しいです。(ただし可能性は感じます)

Windows 標準の OpenSSH ではなく内包されている ssh.exe を使用しているようで、C:\Users\[ユーザー名]\.ssh\config によるホスト名の設定は読み込めない。
けれども、秘密鍵C:\Users\[ユーザー名]\.ssh\id_rsa から読み込んでくる。正直謎。


Cygwinssh をマージしてうまくいったという強そうな人もいるが、私には何を言っているのか分からない。


導入や使い方についての詳細は SSHFS-Win の方の README を参照のこと。やることは該当する .msi を入れるだけです。

マウントするには explorer を開いて 「PC」を右クリック、「ネットワーク ドライブの割り当て」を押して、

\\sshfs\[ユーザー名]@[ホスト名]

的なフォーマットを入力すればok。公開鍵認証の場合は

\\sshfs.k\[ユーザー名]@[ホスト名]

Dokany + Winsshfs

github.com

github.com


名前が紛らわしいですが、Winsshfs は上の「SSHFS-Win」の源流的なもので、2024 年現在では obsolete かもしれません。

パスワード認証さえ使えればいいという場合はこれが使えます。

2024年2月現在、公開鍵認証が使えないので (OpenSSH には対応してませんというエラーが出る)、公開鍵認証で ssh したい時は上の SFTP Drive か、「WinFsp + SSHFS-Win」を使うのが良いと思います。

こちらも同時に 2 台以上のサーバーをマウント可能です。


日本語の情報も多いので、導入方法や使用方法についてはそちらをご参照ください。

*1:こういうファイル形式を ini 形式というそうですが、はてなブログシンタックスハイライトにそれっぽいのがなかった...のですみません。 「;」の行はコメントアウトです。