{"id":13441420,"url":"https://github.com/winfsp/sshfs-win","last_synced_at":"2025-05-14T16:13:43.904Z","repository":{"id":37563643,"uuid":"61451917","full_name":"winfsp/sshfs-win","owner":"winfsp","description":"SSHFS For Windows","archived":false,"fork":false,"pushed_at":"2024-11-21T14:22:50.000Z","size":3489,"stargazers_count":5539,"open_issues_count":293,"forks_count":275,"subscribers_count":79,"default_branch":"master","last_synced_at":"2025-05-04T03:02:04.321Z","etag":null,"topics":["sftp","ssh","sshfs","windows"],"latest_commit_sha":null,"homepage":"https://winfsp.dev","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/winfsp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-18T20:48:02.000Z","updated_at":"2025-05-03T17:37:59.000Z","dependencies_parsed_at":"2024-04-02T13:46:51.222Z","dependency_job_id":"e3822712-bb30-4ba6-b919-7ade59b0faff","html_url":"https://github.com/winfsp/sshfs-win","commit_stats":null,"previous_names":["billziss-gh/sshfs-win"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winfsp%2Fsshfs-win","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winfsp%2Fsshfs-win/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winfsp%2Fsshfs-win/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winfsp%2Fsshfs-win/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/winfsp","download_url":"https://codeload.github.com/winfsp/sshfs-win/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253418941,"owners_count":21905334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sftp","ssh","sshfs","windows"],"created_at":"2024-07-31T03:01:33.719Z","updated_at":"2025-05-14T16:13:43.860Z","avatar_url":"https://github.com/winfsp.png","language":"C","readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"art/sshfs-glow.png\" width=\"256\"/\u003e\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n    SSHFS-Win \u0026middot; SSHFS for Windows\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cb\u003eDownload\u003c/b\u003e\u003cbr\u003e\n    \u003ca href=\"https://github.com/billziss-gh/sshfs-win/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/billziss-gh/sshfs-win.svg?label=stable\u0026style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/billziss-gh/sshfs-win/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/billziss-gh/sshfs-win/all.svg?label=latest\u0026colorB=e52e4b\u0026style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003c!-- a href=\"https://chocolatey.org/packages/sshfs\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/choco-install%20sshfs-black.svg?style=for-the-badge\"/\u003e\n    \u003c/a --\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cb\u003eGUI Frontends\u003c/b\u003e\u003cbr\u003e\n    \u003ca href=\"https://github.com/mhogomchungu/sirikali/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/mhogomchungu/sirikali.svg?label=SiriKali\u0026style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/evsar3/sshfs-win-manager/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/evsar3/sshfs-win-manager.svg?label=SSHFS-Win-Manager\u0026style=for-the-badge\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nSSHFS-Win is a minimal port of [SSHFS](https://github.com/libfuse/sshfs) to Windows. Under the hood it uses [Cygwin](https://cygwin.com) for the POSIX environment and [WinFsp](https://github.com/billziss-gh/winfsp) for the FUSE functionality.\n\n## Installation\n\n- Install the latest version of [WinFsp](https://github.com/billziss-gh/winfsp/releases/latest).\n- Install the latest version of [SSHFS-Win](https://github.com/billziss-gh/sshfs-win/releases). Choose the x64 or x86 installer according to your computer's architecture.\n\nBoth can also be easily installed with [WinGet](https://github.com/microsoft/winget-cli):\n\n```console\nwinget install SSHFS-Win.SSHFS-Win\n```\n\n## Basic Usage\n\nOnce you have installed WinFsp and SSHFS-Win you can map a network drive to a directory on an SSHFS host using Windows Explorer or the `net use` command.\n\n\n### Windows Explorer\n\nIn Windows Explorer select This PC \u003e Map Network Drive and enter the desired drive letter and SSHFS path using the following UNC syntax:\n\n    \\\\sshfs\\REMUSER@HOST[\\PATH]\n\nThe first time you map a particular SSHFS path you will be prompted for the SSHFS username and password. You may choose to save these credentials with the Windows Credential Manager in which case you will not be prompted again.\n\nIn order to unmap the drive, right-click on the drive icon in Windows Explorer and select Disconnect.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"cap.gif\" height=\"450\"/\u003e\n\u003c/p\u003e\n\n### Command Line\n\nYou can map a network drive from the command line using the `net use` command:\n\n```\n\u003e net use X: \\\\sshfs\\billziss@mac2018.local\nThe password is invalid for \\\\sshfs\\billziss@mac2018.local.\n\nEnter the user name for 'sshfs': billziss\nEnter the password for sshfs:\nThe command completed successfully.\n```\n\nYou can list your `net use` drives:\n\n```\n$ net use\nNew connections will be remembered.\n\n\nStatus       Local     Remote                    Network\n\n-------------------------------------------------------------------------------\n             X:        \\\\sshfs\\billziss@mac2018.local\n                                                WinFsp.Np\nThe command completed successfully.\n```\n\nFinally you can unmap the drive as follows:\n\n```\n$ net use X: /delete\nX: was deleted successfully.\n```\n\n## UNC Syntax\n\nThe complete UNC syntax is as follows:\n\n    \\\\sshfs\\[LOCUSER=]REMUSER@HOST[!PORT][\\PATH]\n    \\\\sshfs.r\\[LOCUSER=]REMUSER@HOST[!PORT][\\PATH]\n    \\\\sshfs.k\\[LOCUSER=]REMUSER@HOST[!PORT][\\PATH]\n    \\\\sshfs.kr\\[LOCUSER=]REMUSER@HOST[!PORT][\\PATH]\n\n- `REMUSER` is the remote user (i.e. the user on the SSHFS host whose credentials are being used for access).\n- `HOST` is the SSHFS host.\n- `PORT` is the remote port on the SSHFS host (optional; default is 22).\n- `PATH` is the remote path. This is interpreted as follows:\n    - The `sshfs` prefix maps to `HOST:~REMUSER/PATH` on the SSHFS host (i.e. relative to `REMUSER`'s home directory).\n    - The `sshfs.r` prefix maps to `HOST:/PATH` on the SSHFS host (i.e. relative to the `HOST`'s root directory).\n    - The `sshfs.k` prefix maps to `HOST:~REMUSER/PATH` and uses the ssh key in `%USERPROFILE%/.ssh/id_rsa` (where `%USERPROFILE%` is the home directory of the local Windows user). To specify a different specific key, define an alias of the HOST with the specific private ssh key you want to use in the ssh config. BEWARE: only keys without a pass phrase are supported.\n    - The `sshfs.kr` prefix maps to `HOST:/PATH` and uses the ssh key in `%USERPROFILE%/.ssh/id_rsa`. To specify a different specific key, define an alias of the HOST with the specific private ssh key you want to use in the ssh config. BEWARE: only keys without a pass phrase are supported.\n- `LOCUSER` is the local Windows user (optional; `USERNAME` or `DOMAIN+USERNAME` format).\n    - Please note that this functionality is rarely necessary with latest versions of WinFsp.\n\n## GUI front ends\n\nThere are currently 2 GUI front ends for SSHFS-Win: [SiriKali](https://mhogomchungu.github.io/sirikali/) and [SSHFS-Win-Manager](https://github.com/evsar3/sshfs-win-manager).\n\n### SiriKali\n\n[SiriKali](https://mhogomchungu.github.io/sirikali/) is a GUI front end for SSHFS-Win (and other file systems). Instructions on setting up SiriKali for SSHFS-Win can be found at this [link](https://github.com/mhogomchungu/sirikali/wiki/Frequently-Asked-Questions#90-how-do-i-add-options-to-connect-to-an-ssh-server). Please report problems with SiriKali in its [issues](https://github.com/mhogomchungu/sirikali/issues) page.\n\nSiriKali supports:\n\n- Password authentication.\n- Public key authentication.\n- Key Agents and KeePass 2.\n\n### SSHFS-Win-Manager\n\n[SSHFS-Win-Manager](https://github.com/evsar3/sshfs-win-manager) is a new GUI front end specifically for SSHFS-Win with a user-friendly and intuitive interface. SSHFS-Win-Manager integrates well with Windows and can be closed to the system tray. Please report problems with SSHFS-Win-Manager in its [issues](https://github.com/evsar3/sshfs-win-manager/issues) page.\n\nSSHFS-Win-Manager supports:\n\n- Password authentication.\n- Public key authentication.\n\n## Using Jump Hosts\n\nsshfs-win itself does not currently support ssh tunneling, but something similar can be achieved using the built-in openSSH of windows.\n\n- use openSSH t create a local port forward through the jump host to the target\n  ```\n  ssh -L \u003corigin port of jump connection\u003e:\u003ctarget of tunnel\u003e:\u003cport of target to target\u003e \u003cadress of tunnel jump host\u003e\n  ```\n  All standard settings of the ssh config may be used in this step.\n\n  Reference example ssh config:\n  ```\n  create the file C:\\Users\\\u003cUserName\u003e\\.ssh\\config and/or add the following lines:\n\n  Host \u003cjump host alias\u003e\n    Hostname \u003cadress of jump host\u003e\n    User \u003cuser name at jump host\u003e\n    IdentityFile \u003cpath to private key for login to the jump host, may have a pass phrase\u003e\n    IdentitesOnly yes\n  ```\n- connect to the target server using the following\n  ```\n  \\\\sshfs\\REMUSER@localhost!\u003corigin port of jump connection\u003e\n  ```\n  or similar.\n\n\n## Advanced Usage\n\nIt is possible to use the `sshfs-win.exe` and `sshfs.exe` programs directly for advanced usage scenarios. Both programs can be found in the `bin` subdirectory of the `SSHFS-Win` installation (usually `\\Program Files\\SSHFS-Win\\bin`).\n\nThe `sshfs-win.exe` program is useful to launch `sshfs.exe` from a `cmd.exe` prompt (`sshfs-win cmd`) or to launch `sshfs.exe` under the control of the [WinFsp Launcher](https://github.com/billziss-gh/winfsp/wiki/WinFsp-Service-Architecture) (`sshfs-win svc`). The `sshfs-win.exe` program **SHOULD NOT** be used from Cygwin. The `sshfs-win.exe` program has the following usage:\n\n```\nusage: sshfs-win cmd SSHFS_COMMAND_LINE\n    SSHFS_COMMAND_LINE  command line to pass to sshfs\n\nusage: sshfs-win svc PREFIX X: [LOCUSER] [SSHFS_OPTIONS]\n    PREFIX              Windows UNC prefix (note single backslash)\n                        \\sshfs[.SUFFIX]\\[LOCUSER=]REMUSER@HOST[!PORT][\\PATH]\n                        sshfs: remote user home dir\n                        sshfs.r: remote root dir\n                        sshfs.k: remote user home dir with key authentication\n                        sshfs.kr: remote root dir with key authentication\n    LOCUSER             local user (DOMAIN+USERNAME)\n    REMUSER             remote user\n    HOST                remote host\n    PORT                remote port\n    PATH                remote path (relative to remote home or root)\n    X:                  mount drive\n    SSHFS_OPTIONS       additional options to pass to SSHFS\n```\n\nThe `sshfs.exe` program can be used with an existing Cygwin installation, but it requires prior installation of FUSE for Cygwin on that Cygwin installation. FUSE for Cygwin is included with WinFsp and can be installed on a Cygwin installation by executing the command:\n\n```\n$ sh \"$(cat /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/WinFsp/InstallDir | tr -d '\\0')\"/opt/cygfuse/install.sh\nFUSE for Cygwin installed.\n```\n\n## Passing options to sshfs for mapped network drives\n\nWhen using mapped network drives created in Windows Explorer or using \"net use\", you can't directly pass options to sshfs. You can, however, pass them via a registry patch. When you then map a network drive or use \"net use\", the options are automatically passed in the background. Registry patches for common issues below are provided and serve as an example.\n\n## Preventing timeouts\n\nA connection will timeout after some minutes when nothing is transferred. To prevent this, pass e.g. \"-o ServerAliveInterval=30\" as SSHFS_OPTIONS. A keep-alive request is sent every 30 seconds.\n\nMap network drive or \"net use\": Use the provided \"ServerAliveInterval.reg\" registry patch.\n\n## Setting looser permissions for new files and directories\n\nOn a shared file server, the default permissions for new files created may be too strict and prevent others from reading and writing them. To set looser permissions, pass e.g. \"-o create_file_umask=0117,create_dir_umask=0007\" as SSHFS_OPTIONS. This will allow owner/group read and write permissions on new files and owner/group read, write and execute permissions on new directories.\n\nMap network drive or \"net use\": Use the provided \"GroupReadWrite.reg\" registry patch.\n\n## Project Organization\n\nThis is a simple project:\n\n- `sshfs` is a submodule pointing to the original SSHFS project.\n- `sshfs-win.c` is a simple wrapper around the sshfs program that is used to implement the \"Map Network Drive\" functionality.\n- `sshfs-win.wxs` is a the Wix file that describes the SSHFS-Win installer.\n- `patches` is a directory with a couple of simple patches over SSHFS.\n- `Makefile` drives the overall process of building SSHFS-Win and packaging it into an MSI.\n\n## Building\n\nIn order to build SSHFS-Win you will need Cygwin and the following Cygwin packages:\n\n- gcc-core\n- git\n- libglib2.0-devel\n- make\n- meson\n- patch\n\nYou will also need:\n\n- FUSE for Cygwin. It is included with WinFsp and can be installed on a Cygwin installation by executing the command:\n\n    ```\n    $ sh \"$(cat /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/WinFsp/InstallDir | tr -d '\\0')\"/opt/cygfuse/install.sh\n    FUSE for Cygwin installed.\n    ```\n- [Wix toolset](http://wixtoolset.org). This is a native Windows package that is used to build the SSHFS-Win MSI installer.\n\nTo build:\n\n- Open a Cygwin prompt.\n- Change directory to the sshfs-win repository.\n- Issue `make`.\n- The sshfs-win repository includes the upstream SSHFS project as a submodule; if you have not already done so, you must initialize it with `git submodule update --init sshfs`.\n\n## License\n\nSSHFS-Win uses the same license as SSHFS, which is GPLv2+. It interfaces with WinFsp which is GPLv3 with a FLOSS exception.\n\nIt also packages the following components:\n\n- Cygwin: LGPLv3\n- GLib2: LGPLv2\n- SSH: \"all components are under a BSD licence, or a licence more free than that\"\n","funding_links":[],"categories":["HarmonyOS","C","Install from Source","windows"],"sub_categories":["Windows Manager","Collaboration \u0026 Synchronization"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinfsp%2Fsshfs-win","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwinfsp%2Fsshfs-win","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinfsp%2Fsshfs-win/lists"}