タイトルで全てなのですが、私みたいなWindows大好きな人は、いついかなる時でもLinux上のファイルにWindowsからアクセスしたいものです(主にGUIによる快適なファイル編集環境のため)。
しかし、sshでログインできる先がいつでもSAMBAなどを設定できるとは限りません。もしかするとsudoすらないことも多いです。
そんな場合には、sshfsで解決しているのですが、いつもやり方を忘れてイチから調べなおしたりするのがいい加減に面倒だったのでメモがてら書いておきます。
構成としては
<手元のWindows機> --- <踏み台Linux機> --- <接続先のLinux機>
という感じです。
- まず、踏み台にするLinux機を用意します。仮想環境でも良いかと思いますが、私はいつもsshログインする時に踏み台にする実機があるのでそこを使っています。重要なのは、踏み台Linux機はsudo権限を持っていて好きに設定できるようにすることです。
- 手元のWindows機から、踏み台Linux機へSAMBAを設定して、踏み台Linux機のフォルダを手元のWindowsからアクセスできる状態にします。
- 踏み台Linux機から接続先のLinux機へsshでログインできる状態にします。
- 踏み台Linux機から接続先のLinux機へsshfsを使ってマウントします。このコマンドいっつも忘れるのですが、
sshfs -o allow_other,follow_symlinks,idmap=user <username>@<server>:<server_dir> <my_dir>
です。/etc/fuse.conf
でuser_allow_other
を追加するの忘れないように。 - そうすると、手元のWindows機から踏み台経由で接続先のLinux機のフォルダを読み書きできるようになります。
状態としては以下のようになってますね。
<手元のWindows機> --[samba]-- <踏み台Linux機> --[sshfs]-- <接続先のLinux機>
ほんとはbash on windowsがsshfsをサポートしていれば踏み台を用意する必要はないんですが・・・仕方ない。
あと、winsshfsみたいなのもあったのですが、うまく動きませんでした。
アンマウント
何かの拍子にssfhsがつながらなくなったり変なことになった時にアンマウントするには
$ fusermount -u <my_dir>
/etc/fuse.confが開けない
Ubuntuとかを踏み台にすると
fusermount – failed to open /etc/fuse.conf – Permission denied
みたいなエラーが起きることがあるが、この場合は、
$ sudo gpasswd -u <username> fuse
とfuseグループに追加しないといけない。