Portable SSH Server
Find a file
2023-08-11 12:36:04 +09:00
.github ci: test 2023-08-10 22:34:08 +09:00
cmd test: streamlocal-forward 2023-08-11 11:37:12 +09:00
main test RootCmd 2023-08-10 22:16:35 +09:00
version bump: 0.3.0 2023-08-11 12:35:57 +09:00
.goreleaser.yml implement basic handy-sshd 2023-08-09 08:01:01 +09:00
CHANGELOG.md bump: 0.3.0 2023-08-11 12:35:57 +09:00
go.mod test: direct-streamlocal 2023-08-11 09:33:24 +09:00
go.sum test: direct-streamlocal 2023-08-11 09:33:24 +09:00
LICENSE implement basic handy-sshd 2023-08-09 08:01:01 +09:00
pty_related_unix.go implement basic handy-sshd 2023-08-09 08:01:01 +09:00
pty_related_unsupported.go implement basic handy-sshd 2023-08-09 08:01:01 +09:00
README.md docs: --allow-streamlocal-forward 2023-08-11 11:44:23 +09:00
server.go fix: handle multiple global requests simultaneously 2023-08-11 11:31:35 +09:00

handy-sshd

CI

Portable SSH Server

Install on Ubuntu/Debian

wget https://github.com/nwtgck/handy-sshd/releases/download/v0.2.0/handy-sshd-0.2.0-linux-amd64.deb
sudo dpkg -i handy-sshd-0.2.0-linux-amd64.deb 

Install on Mac

brew install nwtgck/handy-sshd/handy-sshd

Get more executables in the releases.

Examples

# Listen on 2222 and accept user name "john" with password "mypassword"
handy-sshd -p 2222 --user "john:mypassword"
# Listen on 2222 and accept user name "john" without password
handy-sshd -p 2222 --user "john:"
# Listen on 2222 and accept users "john" and "alice" without password
handy-sshd -p 2222 --user "john:" --user "alice:"
# Listen on unix domain socket
handy-sshd --unix-socket /tmp/my-unix-socket --user "john:"

Permissions

There are several permissions:

  • --allow-direct-streamlocal
  • --allow-direct-tcpip
  • --allow-execute
  • --allow-sftp
  • --allow-streamlocal-forward
  • --allow-tcpip-forward

All permissions are allowed when nothing is specified. The log shows "allowed: " and "NOT allowed: " permissions as follows:

$ handy-sshd --user "john:"
2023/08/11 11:40:44 INFO listening on :2222...
2023/08/11 11:40:44 INFO allowed: "tcpip-forward", "direct-tcpip", "execute", "sftp", "streamlocal-forward", "direct-streamlocal"
2023/08/11 11:40:44 INFO NOT allowed: none

For example, specifying --allow-direct-tcpip and --allow-execute allows only them:

$ handy-sshd --user "john:" --allow-direct-tcpip --allow-execute
2023/08/11 11:41:03 INFO listening on :2222...
2023/08/11 11:41:03 INFO allowed: "direct-tcpip", "execute"
2023/08/11 11:41:03 INFO NOT allowed: "tcpip-forward", "sftp", "streamlocal-forward", "direct-streamlocal"

--help

Portable SSH server

Usage:
  handy-sshd [flags]

Flags:
      --allow-direct-streamlocal    client can use Unix domain socket local forwarding
      --allow-direct-tcpip          client can use local forwarding and SOCKS proxy
      --allow-execute               client can use shell/interactive shell
      --allow-sftp                  client can use SFTP and SSHFS
      --allow-streamlocal-forward   client can use Unix domain socket remote forwarding
      --allow-tcpip-forward         client can use remote forwarding
  -h, --help                        help for handy-sshd
      --host string                 SSH server host (e.g. 127.0.0.1)
  -p, --port uint16                 SSH server port (default 2222)
      --shell string                Shell
      --unix-socket string          Unix domain socket
      --user stringArray            SSH user name (e.g. "john:mypassword")
  -v, --version                     show version