Windows でも sshfs でリモートホストのディレクトリをマウントできるやつです。
Chocolatey で入れようと思ったのですが、すごく古い? あるいは別物?
なので Scoop で入れました。nonportable バケットを追加する必要があります。
# cmd.exe
scoop bucket add nonportable
scoop install sshfs-np
インストール後、コマンドプロンプトで次のように入力し、リモートのユーザー名とパスワードを入力すると X:
にリモートホストのユーザーのホームディレクトリがマウントされます。
# cmd.exe net use X: \\sshfs\oreore@ore-no-server
要らなくなったら次のコマンドで削除します。
# cmd.exe
net use X: /delete
UNC を \\sshfs.r
で指定すればホームディレクトリではなくルートディレクトリをマウントできます。
# cmd.exe net use X: \\sshfs.r\oreore@ore-no-server
公開鍵認証もできます。%USERPROFILE%/.ssh/id_rsa
に秘密鍵を置きます。普段は WSL で SSH を使っているので WSL のホームディレクトリからコピります。
# WSL cp ~/.ssh/id_* "$(wslpath "c:\\Users\\$USER\\.ssh")"
UNC を \\sshfs.k
で指定すれば公開鍵認証になるのでユーザー名やパスワードの入力は必要ありません。なお、この場合はリモートユーザのホームディレクトリがマウントされます。
# cmd.exe net use X: \\sshfs.k\oreore@ore-no-server
SSHFS-Win の README によると \\sshfs.kr
で公開鍵認証&ルートディレクトリをマウントできるとのことなのですが、なぜか出来ません。
# cmd.exe net use X: \\sshfs.kr\oreore@ore-no-server # システム エラー 67 が発生しました。 # # ネットワーク名が見つかりません。
Scoop で入った SSHFS-Win のバージョンが安定版の v3.5.20024 だからでした。最新版を入れればたぶんできると思います。
また、ed25519 の秘密鍵だとダメでした。SSHFS-Win に付随されている ssh のバージョン的には大丈夫そうですけど。
# cmd.exe "C:\Program Files\SSHFS-Win\bin\ssh.exe" -V # OpenSSH_8.0p1, OpenSSL 1.1.1d 10 Sep 2019
どうも .ssh/id_rsa
がベタ書きされているためのようです。
- https://github.com/billziss-gh/sshfs-win/issues/210
- https://github.com/billziss-gh/sshfs-win/blob/v3.5.20160/sshfs-win.c#L224
また、%USERPROFILE%/.ssh/config
にいろいろ書いておいても net use
でマウントするときには参照されないようです。
さいごに
昔はよく CentOS に samba を入れて Windows からアクセスできるようにしていたのですが、実際のところ Windows から直接リモートのファイルを開くようなことはほとんど無く、ssh でログインして vim なり、scp や rsync なりで十分だったため、samba は使わなくなりました。
ので、改めて Windows から sshfs でリモートホストにアクセス出来るようになっても、個人的にはあまり使うことは無さそうな気もしています。
ただ、普段 scp や rsync とかの CLI よりも WinSCP とかの GUI をメインに使っている人にはこれは有用かもしれません。
なお、あらかじめ net use
などでネットワークドライブとしてマウントしてく必要があるようです。直接エクスプローラーから \\sshfs.k\oreore@ore-no-server
のような UNC パスは開けませんでした。これはちょと不便な気もします。SSH ログインさえ出来るようにしておけば事前準備なしにエクスプローラーからサクッと開ける、なら便利そうですけど、ちょっと残念。
もしくは下記のように sshfs-win.exe
を直接実行すれば、コマンドを実行中だけリモートとストを指定したディレクトリにマウントできるようです。
"C:\Program Files\SSHFS-Win\bin\sshfs-win.exe" cmd -f oreore@ore-no-server:/ ore-no-server
Ctrl+x でコマンドを止めればマウントも終了します。
"C:\Program Files\SSHFS-Win\bin\sshfs.exe" -f oreore@ore-no-server:/ ore-no-server