SSHFS remote directory mounting syntax
A Windows-10 64-bit PC was outfitted with:
- winfsp - msi download of latest release version or the Github project
- sshfs-win - msi download of latest release version or the Github project
A remote linux directory (mydirectory
) is to be mounted to S:. The syntax is documented here.
"Baby steps" indicating preliminary success (non-Admin CLI):
net use S: \\sshfs\[email protected]\..\..
however this does not mount mydirectory
Other user's attempts to mount target directory have failed. Attempt from the Admin command-line failed:
net use S: \\sshfs\[email protected]\\mnt\MOUNTPOINT\mydirectory
System Error 67 has occured. The network name can not be found
Other failures:
net use S: \\sshfs\[email protected]\mnt\MOUNTPOINT\mydirectory
net use S: \\sshfs\[email protected]:\mnt\MOUNTPOINT\mydirectory
for some reason, the syntax is such that I am required to type the username and password despite inputting the username: user@hostname
- What is the correct syntax to mount
mydirectory
to the S: drive? - What diagnostics can be performed to determine corrective action?
In my Windows 10 mounting home directory of remote ssh server worked in user's powershell using command
net use S: \\sshfs\user@host\.
Note single dot at the end! Without the dot it did not work. For mounting root folder, use
net use S: \\sshfs\user@host\..\..
The same works (but with different syntax) on Windows Explorer -> This PC -> Map network drive. In my system I had to enter the path with leading two backward slashes: for root
\\sshfs\user@host/../..
for home
\\sshfs\user@host/
Note forward slashes here! You may need to mark "Use different credentials" and enter username / password in several subsequent dialogue boxes.
The net use
command did not work for me, admin or not, PowerShell or CMD.
- Open Windows Explorer
- Find
this pc
, right-click on it - Select
map network drive
- Enter
\\sshfs\[email protected]/../../etc/blabber/mouth
in Folder - Check "Connect using different credentials".
- Hit Enter
Notes:
Windows 10 seems to be funny about permissions and folders here.
If you map \\sshfs\[email protected]/
you'll be stuck in your home folder and whatever sub folders it has. But you should be able to read and write.
If you map \\sshfs\[email protected]/../..
You'll be at the root folder, but will be stuck with whatever permissions your user has for the root for all folders. If you don't have write access on the root folder, you won't have write access on anything below it because Windows.
If you map \\sshfs\[email protected]/../../etc/blabber/mouth
You'll have whatever permissions your user has on folder 'mouth', but you'll be stuck in that folder, same as your home folder.
For newbs, adding /../..
is the equivalent of going into your home folder and typing cd ../..
Also the: is ignored/not needed in Windows mapping.
On Linux I can mount the remote root folder and operate as if I'm local to the machine; I can navigate to any folder.
On windows, there are quirks and restrictions you have to work around, so it's better to mount the folder you need to work in. Inconvenient if you need access to multiple folders, but it works.
This command works for me in the non-admin powershell in Windows 10:
net use S: \\sshfs\[email protected]\..\..\my_remote_directory
This did not work for me in cmd, but neither did the first baby step.
I originally found this question when trying to use map network drive in the GUI for a remote folder in windows 10. Your baby step lead me to something that worked. I was able to mount a remote directory with the below in the folder field.
\\sshfs\[email protected]\..\..\my_remote_directory
Simple answer:
Use \\sshfs.r
instead of \\sshfs
Long answer:
The simple syntax to access a remote folder is:
\\prefix\remoteuser@host[\path]
According to the SSHFS-Win readme, there are 4 prefixes to use when specifying the connection (section UNC Syntax):
"sshfs", "sshfs.r", "sshfs.k", "sshfs.kr"
The prefix affect how the path is interpreted.
In "sshfs", the path is relative to the remoteuser
's home folder (usually /home/remoteuser). So, when you do
net use S: \\sshfs\[email protected]\mnt\MOUNTPOINT\mydirectory
You are trying to mount /home/user/mnt/MOUNTPOINT/mydirectory
In this case you should use the sshfs.r
prefix, where the path is relative to the root directory (/
):
net use S: \\sshfs.r\[email protected]\mnt\MOUNTPOINT\mydirectory
I hope this helps.