TUI list select and parallel ssh/scp client command.
Clone or download
uesugi README update
Latest commit 05f501b Aug 31, 2018



TUI list select ssh/scp client.


command to read a prepared list in advance and connect ssh/scp the selected host. List file is set in yaml format.When selecting a host, you can filter by keywords. Can execute commands concurrently to multiple hosts. Supported multiple ssh proxy, and supported http/socks5 proxy.



lscp is need the following command in remote server.

  • scp


compile gofile(tested go1.8.3).

go get
cd $GOPATH/src/
make && sudo make install && make clean

brew install(Mac OS X)

brew tap blacknon/lssh
brew install lssh

# generate .lssh.conf(not use ~/.ssh/config)
curl -s | cp -n <(cat) ~/.lssh.conf # copy sample config file

# generate .lssh.conf(use ~/.ssh/config.not support proxy)
lssh --generate > ~/.lssh.conf


Please edit "~/.lssh.conf". The connection information at servers,can be divided into external files. log dir "<Date>" => date(YYYYMMDD) ,"<Hostname>" => Servername.


# terminal log settings
enable = true
timestamp = true
dirpath = "/path/to/logdir"

# server common settings
port = "22"
user = "test"

# include config file settings and path (only common,server conf)
path = "/path/to/include/file"

addr = ""
pass = "Password"
note = "Password Auth Server"

addr = ""
user = "test-user"
key  = "/path/to/private_key"
note = "Key Auth Server"

addr = ""
key  = "/path/to/private_key"
note = "Before/After run local command"
pre_cmd = "(option) exec command before ssh connect."
post_cmd = "(option) exec command after ssh disconnected."

addr = ""
key  = "/path/to/private_key"
note = "proxy server"

addr = ""
key  = "/path/to/private_key"
note = "connect use ssh proxy"
proxy = "sshProxyServer"

addr = ""
key  = "/path/to/private_key"
note = "connect use ssh proxy(multiple)"
proxy = "overProxyServer"

addr = ""
key  = "/path/to/private_key"
note = "connect use http proxy"
proxy = "HttpProxy"
proxy_type = "http"

addr = ""
key  = "/path/to/private_key"
note = "connect use socks5 proxy"
proxy = "Socks5Proxy"
proxy_type = "socks5"

addr = ""
port = "8080"

addr = ""
port = "54321"

After run command.



lssh v0.5.0
Usage: lssh [--host HOST] [--list] [--file FILE] [--terminal] [--parallel] [--generate] [--command COMMAND]

  --host HOST, -H HOST   connect servername
  --list, -l             print server list
  --file FILE, -f FILE   config file path
  --terminal, -t         run specified command at terminal
  --parallel, -p         run command parallel node(tail -F etc...)
  --generate             (beta) generate .lssh.conf from .ssh/config.(not support ProxyCommand)
  --command COMMAND, -c COMMAND
                         remote Server exec command.
  --help, -h             display this help and exit
  --version              display version and exit


lscp v0.5.0
Usage: lscp [--host HOST] [--file FILE] [--permission] FROM TO

Positional arguments:
  FROM                   copy from path (local:<path>|remote:<path>)
  TO                     copy to path (local:<path>|remote:<path>)

  --host HOST, -H HOST   connect servername
  --file FILE, -f FILE   config file path
  --permission, -p       copy file permission
  --help, -h             display this help and exit
  --version              display version and exit

If you specify a command as an argument, you can select multiple hosts. Select host 'Tab', select all displayed hosts 'Ctrl + A'.

[lssh] copy files using stdin/stdout to/from remote server

You can scp like copy files using stdin/stdout.It also supports multiple nodes(parallel is not yet supported now).

# from local to remote server
cat LOCAL_PATH | lssh -C 'cat > REMOTE_PATH'

# from remote server to local
lssh -C 'cat REMOTE_PATH' | cat > LOCAL_PATH

[lssh] multiple node select exec tail -f

# -p option parallel exec command
lssh -p -c 'cmd'

[lscp] scp remote to local (get)

exec lscp get file/dir (remote to local scp).

lscp remote:/path/to/remote local:/path/to/local

# short version
lscp r:/path/to/remote l:/path/to/local

[lscp] scp local to remote (put)

exec lscp put file/dir (local to remote scp). If multiple server selected, mkdir servername dir.

lscp local:/path/to/remote remote:/path/to/local

# short version
lscp l:/path/to/local r:/path/to/remote

[lscp] scp remote to remote

exec lscp get/put file/dir (remote to remote scp).

lscp remote:/path/to/remote(get) remote:/path/to/remote(put)

# short version
lscp r:/path/to/remote(get) r:/path/to/local(put)


A short snippet describing the license MIT.