リモートの Linux サーバーを Windows 11 の explorer にマウントする方法を模索しました。
VSCode の Remote-SSH ではリモートサーバー上で開いたディレクトリのツリー構造を可視化してくれますが、それを Windows explore でもやりたいなと思いました。
結論から言うと、Windows explorer から SFTP (SSH File Transfer Protocol) 接続を行うのは厳しくて、WSL2 で Nautilus 等のファイルマネージャーを動かすのが一番早いと思います。
ただし、explorer を諦めれば似たようなことは実現可能であり、また、とある条件の下であれば Windows explorer にマウントする手段もいくつかあるようです。
そこで、今回は Nautilus による方法とその他の代替案 5 つを、個人的に有用だと思う順に紹介します。
正直この機能は Windows に標準搭載されててほしいレベルです。Microsoft さんよろしく頼みます。もしかしたら既にあるのかもしれませんが。。。
色々分かり次第この記事に追記していきます。
こんな方法あるよっていうのがあったら教えて頂けるとうれしいです。
目次
環境
- Windows11 Pro 23H2
- WSL2
- Ubuntu 22.04.3 LTS
WSLg の使えない Windows10 の名残で VcXsrv を使っていたりすると環境がごちゃごちゃになったり、Ubuntu 20.04 LTS の方を使うと面倒な設定をしないといけなかったりするので、できるだけ新しい環境を使う方が良いかと思います。
ただし、Ubuntu 24.04 LTS は現状対応していないソフトもそこそこあるので、ここでは間を取って 22.04 を使うものとします。
方法 6 つ
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」を押せばばっちぐ~。
Trouble Shooting
【2024/06/25 追記】内容が嵩張ってきたので記事を分離させることにしました。
何か変だぞってなった場合は ↑ こちらをご覧いただけると解決できるかもしれません。
WinSCP
これも Windows explorer から見るという趣旨からズレそうですが、かなり便利そうです。
恐らく私が求めていたものにもっとも近いソリューションがこのソフトな気がします。こちらは Windows にそのまま入るので、ローカルの Windows の規定のソフトでリモート先のファイルを直接開けるのが魅力です。
公開鍵認証、ProxyJump、両方いけます。
踏み台サーバーを経由してWinSCPでSSH接続する - Webmasters' Journal
やり方は ↑ この辺りを読むとよいです。
OpenSSH 形式の秘密鍵 (id_rsa とか) には対応していないようで、接続時に PuTTY 形式 (.ppk) に自動で変換されますが、上書きはされないのでご安心を。
RaiDrive
安全性はよく知りませんが、強そうなのでここに書いておきます。*2
GCP や AWS, Azure といったクラウドをマウントする感じのツールらしいです。SFTP は勿論, Google Drive や OneDrive, Mega 等も行けるっぽいです。
2024年7月現在、無料版では合計 8 ドライブまでマウント可能で、以下は書き込みも可能。(他は読み取り専用)
- Google Drive
- OneDrive
- Dropbox
- Naver MYBOX
- WebDAV, SFTP, FTP
できることは多いけどマウントの速度は下の SFTP Drive よりは遅め。
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 をマージしてうまくいったという強そうな人もいるが、私には何を言っているのか分からない。
【2024/10/02 追記】
%USERPROFILE%\.ssh\config
は読めるようになっていたそうです。これにより、多段 Jump もできるようになっています。(2020 年の時点でそうだぞ... お前の目は節穴か?)
しかし、sshfs-win-3.7.21011.msi
を入れ直して実際にやってみたらパスワードを求められ、公開鍵認証を使うみたいな選択肢が与えられず、issue を読み漁ってもよくわからなかったので (←)、恐らく「多段 Jump + パスワード認証」はできても「多段 Jump + 公開鍵認証」は難しそうです。 (しかし可能性は感じます)
導入や使い方についての詳細は 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 台以上のサーバーをマウント可能です。
日本語の情報も多いので、導入方法や使用方法についてはそちらをご参照ください。