リモートの 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
- Ubuntu 22.04.3 LTS
方法 4 つ
WSL2 + Nautilus
初っ端から趣旨とはずれますが、一番簡単なので...
サーバーが Linux ならクライアントも Linux の方が結局楽じゃんという身も蓋もない話です。
ただし、あくまで Linux 上の X Window を動かしての話なので、例えば Windows explorer と Nautilus の間で D&D みたいなことはできません。OS が Windows と WSL でバッファを共有している訳ではないので当然といえば当然ですが、残念。
まぁ、Nautilus を 2 つ開いたらそれらの間では D&D できるので、あんまり問題ではないのですが。いい加減 CUI に慣れたいですね。
デフォルトだと GUI レンダリングがおかしくなるので、まず C:\Users\[ユーザー名]\.wslconfig
に以下を追記します。(.wslconfig
がない場合は新規作成します。) *1
[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
な…何を言ってるのかわからねーと思うが、俺も何をしてるのかわからなかった...
↑ ここやここに貼ってある 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
公開鍵認証、パスワード認証、どちらでも使えます。
ただし、同時に 2 つ以上のサーバーをマウントするには Professional Edition という有料版が必要になる上、踏み台サーバー (jump server) を超えての SFTP 接続は対応していないっぽいです。
導入自体は上の公式サイトからインストーラーをダウンロードしてくるとよいでしょう。
導入時に名前や所属が訊かれますが、適当でもバレないでしょう。私は出身大学の学生って設定でハンドルネームを設定しました。メアドは空欄でもいけたので、もしかしたら名前すら要らないのかも。
WinFsp + SSHFS-Win
公開鍵認証、パスワード認証、どちらも可能。2 台以上の同時マウントも可。
しかし、これも jumpserver を超えての SFTP 接続は厳しいです。(ただし可能性は感じます)
Windows 標準の OpenSSH ではなく内包されている ssh.exe を使用しているようで、C:\Users\[ユーザー名]\.ssh\config
によるホスト名の設定は読み込めない。
けれども、秘密鍵は C:\Users\[ユーザー名]\.ssh\id_rsa
から読み込んでくる。正直謎。
Cygwin の ssh をマージしてうまくいったという強そうな人もいるが、私には何を言っているのか分からない。
導入や使い方についての詳細は SSHFS-Win の方の README を参照のこと。やることは該当する .msi を入れるだけです。
マウントするには explorer を開いて 「PC」を右クリック、「ネットワーク ドライブの割り当て」を押して、
\\sshfs\[ユーザー名]@[ホスト名]
的なフォーマットを入力すればok。公開鍵認証の場合は
\\sshfs.k\[ユーザー名]@[ホスト名]
Dokany + Winsshfs
名前が紛らわしいですが、Winsshfs は上の「SSHFS-Win」の源流的なもので、2024 年現在では obsolete かもしれません。
パスワード認証さえ使えればいいという場合はこれが使えます。
2024年2月現在、公開鍵認証が使えないので (OpenSSH には対応してませんというエラーが出る)、公開鍵認証で ssh したい時は上の SFTP Drive か、「WinFsp + SSHFS-Win」を使うのが良いと思います。
こちらも同時に 2 台以上のサーバーをマウント可能です。
日本語の情報も多いので、導入方法や使用方法についてはそちらをご参照ください。