{"id":17482902,"url":"https://github.com/creationix/sftp-server","last_synced_at":"2025-04-10T02:43:43.416Z","repository":{"id":1411303,"uuid":"1482048","full_name":"creationix/sftp-server","owner":"creationix","description":"sftp-server implemented in pure JS using node","archived":false,"fork":false,"pushed_at":"2011-03-17T00:20:03.000Z","size":118,"stargazers_count":28,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T04:14:03.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://tools.ietf.org/html/draft-ietf-secsh-filexfer-02","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"andrewhavens/mad_chatter","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/creationix.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-03-15T09:40:09.000Z","updated_at":"2023-09-08T16:28:49.000Z","dependencies_parsed_at":"2022-07-07T11:34:59.410Z","dependency_job_id":null,"html_url":"https://github.com/creationix/sftp-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Fsftp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Fsftp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Fsftp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creationix%2Fsftp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/creationix","download_url":"https://codeload.github.com/creationix/sftp-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248145381,"owners_count":21055115,"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":[],"created_at":"2024-10-18T23:47:17.984Z","updated_at":"2025-04-10T02:43:43.395Z","avatar_url":"https://github.com/creationix.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NodeJS sftp-server\n\nHave you ever mounted a remote system over ssh and wondered what protocol it used to transfer the files.\n\nMore than likely it was the sftp protocol (not to be confused with ftp or ftps or ftp over ssh).\n\nIn order to be able to mount embedded devices that don't have openssh or ftpd, I'm implementing just the sftp server protocol in JavaScript.\n\nTo test this, run the sftp.js file on one terminal:\n\n    node sftp.js\n\nThen in another terminal, try to mount it using `sshfs`.\n\n    sudo mkdir /media/nodejs\n    sudo chown tim:tim /media/nodejs\n    sshfs -o directport=6000 localhost:/home/tim /media/nodejs\n\nThen from there explore your new nodeJS powered filesystem.  If you hit a part of the protocol I haven't fully implemented, your sshfs client will lock hard.\n\nTo recover from a lock, kill sshfs and umount\n\n    killall -9 sshfs\n    sudo umount /media/nodejs -l\n\nThe `killall` will free up your processes that got blocked by sshfs.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreationix%2Fsftp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcreationix%2Fsftp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreationix%2Fsftp-server/lists"}