All Projects → blacknon → Lssh

blacknon / Lssh

Licence: mit
List selection type alternative ssh/scp/sftp client. Pure Go.

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Lssh

Ssh Mitm
ssh mitm server for security audits supporting public key authentication, session hijacking and file manipulation
Stars: ✭ 335 (+204.55%)
Mutual labels:  sftp, scp, ssh, ssh-client
Sshj
ssh, scp and sftp for java
Stars: ✭ 2,016 (+1732.73%)
Mutual labels:  sftp, scp, ssh, ssh-client
Wolfssh
wolfSSH is a small, fast, portable SSH implementation, including support for SCP and SFTP.
Stars: ✭ 142 (+29.09%)
Mutual labels:  sftp, scp, ssh, ssh-client
termscp
🖥 A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/S3
Stars: ✭ 707 (+542.73%)
Mutual labels:  sftp, tui, scp, ssh-client
Libssh2
the SSH library
Stars: ✭ 743 (+575.45%)
Mutual labels:  sftp, scp, ssh
Goph
🤘 The native golang ssh client to execute your commands over ssh connection. 🚀🚀
Stars: ✭ 734 (+567.27%)
Mutual labels:  sftp, ssh, ssh-client
Winscp
WinSCP is a popular free SFTP and FTP client for Windows, a powerful file manager that will improve your productivity. It supports also Amazon S3, FTPS, SCP and WebDAV protocols. Power users can automate WinSCP using .NET assembly.
Stars: ✭ 794 (+621.82%)
Mutual labels:  sftp, scp, ssh
S3 Sftp Proxy
An AWS S3 gateway proxying SFTP connections.
Stars: ✭ 112 (+1.82%)
Mutual labels:  sftp, scp, ssh
ssh2.nim
Async SSH, SCP and SFTP client for Nim, using libssh2 wrapper [WIP]
Stars: ✭ 17 (-84.55%)
Mutual labels:  ssh, sftp, scp
sshtools
Java SSH tools - easier SSH & SFTP in Java
Stars: ✭ 15 (-86.36%)
Mutual labels:  ssh, sftp, ssh-client
Sync
syncs your local folder with remote folder using scp
Stars: ✭ 293 (+166.36%)
Mutual labels:  sftp, scp, ssh
Cowrie
Cowrie SSH/Telnet Honeypot https://cowrie.readthedocs.io
Stars: ✭ 3,810 (+3363.64%)
Mutual labels:  sftp, scp, ssh
Kitty
💻 KiTTY, a free telnet/ssh client for Windows
Stars: ✭ 791 (+619.09%)
Mutual labels:  ssh, ssh-client
Sshkit.ex
An Elixir toolkit for performing tasks on one or more servers, built on top of Erlang’s SSH application.
Stars: ✭ 108 (-1.82%)
Mutual labels:  scp, ssh
Ssb
Secure Shell Bruteforcer — A faster & simpler way to bruteforce SSH server
Stars: ✭ 832 (+656.36%)
Mutual labels:  ssh, ssh-client
Cloudconnect
Cloud aware client to connect ssh, sftp and rdp
Stars: ✭ 25 (-77.27%)
Mutual labels:  sftp, ssh
Git Web Client
[Abandoned] Web Git client using full stack Symfony2 with SSH/SFTP support
Stars: ✭ 32 (-70.91%)
Mutual labels:  sftp, ssh
Ssh Action
GitHub Actions for executing remote ssh commands.
Stars: ✭ 1,095 (+895.45%)
Mutual labels:  ssh, ssh-client
Sshw
🐝 ssh client wrapper for automatic login
Stars: ✭ 636 (+478.18%)
Mutual labels:  ssh, ssh-client
Parallel Ssh
Asynchronous parallel SSH client library.
Stars: ✭ 864 (+685.45%)
Mutual labels:  ssh, ssh-client

TravisCI Go Report Card

lssh

TUI list select ssh/scp/sftp client tools.

Description

command to read a prepared list in advance and connect ssh/scp/sftp 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, http/socks5 proxy, x11 forward, and port forwarding.

Features

  • List selection type ssh client.
  • Pure Go.
  • Commands can be executed by ssh connection in parallel.
  • Supported ssh multiple proxy, http/socks5 proxy.
  • Supported ssh-agent.
  • Supported Port forward, x11 forward.
  • Can use bashrc of local machine at ssh connection destination.

Demo

Install

compile

compile gofile(tested go1.12.4).

GO111MODULE=auto go get -u github.com/blacknon/lssh/cmd/lssh
GO111MODULE=auto go get -u github.com/blacknon/lssh/cmd/lscp
GO111MODULE=auto go get -u github.com/blacknon/lssh/cmd/lsftp

# copy sample config. create `~/.lssh.conf`.
test -f ~/.lssh.conf||curl -s https://raw.githubusercontent.com/blacknon/lssh/master/example/config.tml -o ~/.lssh.conf

or

git clone https://github.com/blacknon/lssh
cd lssh
GO111MODULE=auto make && sudo make install

# copy sample config. create `~/.lssh.conf`.
test -f ~/.lssh.conf||curl -s https://raw.githubusercontent.com/blacknon/lssh/master/example/config.tml -o ~/.lssh.conf

brew install

brew install(Mac OS X)

brew tap blacknon/lssh
brew install lssh

# copy sample config. create `~/.lssh.conf`.
test -f ~/.lssh.conf||curl -s https://raw.githubusercontent.com/blacknon/lssh/master/example/config.tml -o ~/.lssh.conf

Config

Please edit "~/.lssh.conf".
For details see wiki.

Usage

lssh

run command.

lssh

option(lssh)

NAME:
    lssh - TUI list select and parallel ssh client command.
USAGE:
    lssh [options] [commands...]

OPTIONS:
    --host servername, -H servername            connect servername.
    --file filepath, -F filepath                config filepath. (default: "~/.lssh.conf")
    -L [bind_address:]port:remote_address:port  Local port forward mode.Specify a [bind_address:]port:remote_address:port. Only single connection works.
    -R [bind_address:]port:remote_address:port  Remote port forward mode.Specify a [bind_address:]port:remote_address:port.  Only single connection works.
    -D port                                     Dynamic port forward mode(Socks5). Specify a port. Only single connection works.
    -w                                          Displays the server header when in command execution mode.
    -W                                          Not displays the server header when in command execution mode.
    --not-execute, -N                           not execute remote command and shell.
    --x11, -X                                   x11 forwarding(forward to ${DISPLAY}).
    --term, -t                                  run specified command at terminal.
    --parallel, -p                              run command parallel node(tail -F etc...).
    --localrc                                   use local bashrc shell.
    --not-localrc                               not use local bashrc shell.
    --pshell, -s                                use parallel-shell(pshell) (alpha).
    --list, -l                                  print server list from config.
    --help, -h                                  print this help
    --version, -v                               print the version

COPYRIGHT:
    blacknon([email protected])

VERSION:
    0.6.2

USAGE:
    # connect ssh
    lssh

    # run command selected server over ssh.
    lssh command...

    # run command parallel in selected server over ssh.
    lssh -p command...

    # run command parallel in selected server over ssh, do it in interactively shell.
    lssh -s

lscp

run command.

lscp from... to

option(lscp)

NAME:
    lscp - TUI list select and parallel scp client command.
USAGE:
    lscp [options] (local|remote):from_path... (local|remote):to_path

OPTIONS:
    --host value, -H value  connect servernames
    --list, -l              print server list from config
    --file value, -F value  config file path (default: "~/.lssh.conf")
    --permission, -p        copy file permission
    --help, -h              print this help
    --version, -v           print the version

COPYRIGHT:
    blacknon([email protected])

VERSION:
    0.6.2

USAGE:
    # local to remote scp
    lscp /path/to/local... remote:/path/to/remote

    # remote to local scp
    lscp remote:/path/to/remote... /path/to/local

    # remote to remote scp
    lscp remote:/path/to/remote... remote:/path/to/local

lsftp

run command.

lsftp

option(lsftp)

NAME:
    lsftp - TUI list select and parallel sftp client command.
USAGE:
    lsftp [options]

OPTIONS:
    --file value, -F value  config file path (default: "~/.lssh.conf")
    --help, -h              print this help
    --version, -v           print the version

COPYRIGHT:
    blacknon([email protected])

VERSION:
    0.6.2

USAGE:
  # start lsftp shell
  lsftp

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

1. [lssh] connect terminal

You can connect to the terminal like a normal ssh command (OpenSSH).

You can connect using a local bashrc file (if ssh login shell is bash).

~/.lssh.conf example.

[server.localrc]
addr = "192.168.100.104"
key  = "/path/to/private_key"
note = "Use local bashrc files."
local_rc = 'yes'
local_rc_file = [
     "~/dotfiles/.bashrc"
    ,"~/dotfiles/bash_prompt"
    ,"~/dotfiles/sh_alias"
    ,"~/dotfiles/sh_export"
    ,"~/dotfiles/sh_function"
]

You can execute commands before and after ssh connection.
You can also change the color of each host's terminal by combining it with the OSC escape sequence.

if iTerm2, you can also change the profile.

~/.lssh.conf example.

[server.iTerm2_sample]
addr = "192.168.100.103"
key  = "/path/to/private_key"
note = "Before/After run local command"
pre_cmd = 'printf "\033]50;SetProfile=Theme\a"'    # ssh theme
post_cmd = 'printf "\033]50;SetProfile=Default\a"' # local theme
note = "(option) exec command after ssh disconnected."

[server.GnomeTerminal_sample]
addr = "192.168.100.103"
key  = "/path/to/private_key"
note = "Before/After run local command"
pre_cmd = 'printf "\e]10;#ffffff\a\e]11;#503000\a"'  # ssh color
post_cmd = 'printf "\e]10;#ffffff\a\e]11;#000000\a"' # local color
note = "(option) exec command after ssh disconnected."

A terminal log can be recorded by writing a configuration file.

~/.lssh.conf example.

[log]
enable = true
timestamp = true
dirpath = "~/log/lssh/<Date>/<Hostname>"

There are other parameters corresponding to ClientAliveInterval and ClientAliveCountMax.

[server.alivecount]
addr = "192.168.100.101"
key  = "/path/to/private_key"
note = "alive count max."
alive_max = 3 # ServerAliveCountMax
alive_interval = 60 # ServerAliveCountInterval

2. [lssh] run command (parallel)

It is possible to execute by specifying command in argument.
Parallel execution can be performed by adding the -p option.

# exec command over ssh.
lssh <command...>

# exec command over ssh, parallel.
lssh -p <command>

In parallel connection mode (-p option), Stdin can be sent to each host.\

Can be piped to send Stdin.

# You can pass values ​​in a pipe
command... | lssh <command...>

3. [lssh] Execute commands interactively (parallel shell)

You can send commands to multiple servers interactively.

# parallel shell connect
lssh -s

You can also combine remote and local commands.

remote_command | !local_command

4. [lscp] scp (local=>remote(multi), remote(multi)=>local, remote=>remote(multi))

You can do scp by selecting a list with the command lscp.
You can select multiple connection destinations. This program use sftp protocol.

local => remote(multiple)

# lscp local => remote(multiple)
lscp /path/to/local... r:/path/to/remote

remote(multiple) => local

# lscp remote(multiple) => local
lscp r:/path/to/remote... /path/to/local

remote => remote(multiple)

# lscp remote => remote(multiple)
lscp r:/path/to/remote... r:/path/to/local

5. [lsftp] sftp (local=>remote(multi), remote(multi)=>local)

You can do sftp by selecting a list with the command lstp.
You can select multiple connection destinations.

lsftp

5. include ~/.ssh/config file.

Load and use ~/.ssh/config by default.
ProxyCommand can also be used.

Alternatively, you can specify and read the path as follows: In addition to the path, ServerConfig items can be specified and applied collectively.

[sshconfig.default]
path = "~/.ssh/config"
pre_cmd = 'printf "\033]50;SetProfile=local\a"'
post_cmd = 'printf "\033]50;SetProfile=Default\a"'

6. include other ServerConfig file.

You can include server settings in another file.
common settings can be specified for each file that you went out.

~/.lssh.conf example.

[includes]
path = [
	 "~/.lssh.d/home.conf"
	,"~/.lssh.d/cloud.conf"
]

~/.lssh.d/home.conf example.

[common]
pre_cmd = 'printf "\033]50;SetProfile=dq\a"'       # iterm2 ssh theme
post_cmd = 'printf "\033]50;SetProfile=Default\a"' # iterm2 local theme
ssh_agent_key = ["~/.ssh/id_rsa"]
ssh_agent = false
user = "user"
key = "~/.ssh/id_rsa"
pkcs11provider = "/usr/local/lib/opensc-pkcs11.so"

[server.Server1]
addr = "172.16.200.1"
note = "TEST Server1"
local_rc = "yes"

[server.Server2]
addr = "172.16.200.2"
note = "TEST Server2"
local_rc = "yes"

The priority of setting values ​​is as follows.

[server.hogehoge] > [common] at Include file > [common] at ~/.lssh.conf

7. Supported Proxy

Supports multiple proxy.

  • http
  • socks5
  • ssh

Besides this, you can also specify ProxyCommand like OpenSSH.

http proxy example.

[proxy.HttpProxy]
addr = "example.com"
port = "8080"

[server.overHttpProxy]
addr = "over-http-proxy.com"
key  = "/path/to/private_key"
note = "connect use http proxy"
proxy = "HttpProxy"
proxy_type = "http"

socks5 proxy example.

[proxy.Socks5Proxy]
addr = "example.com"
port = "54321"

[server.overSocks5Proxy]
addr = "192.168.10.101"
key  = "/path/to/private_key"
note = "connect use socks5 proxy"
proxy = "Socks5Proxy"
proxy_type = "socks5"

ssh proxy example.

[server.sshProxyServer]
addr = "192.168.100.200"
key  = "/path/to/private_key"
note = "proxy server"

[server.overProxyServer]
addr = "192.168.10.10"
key  = "/path/to/private_key"
note = "connect use ssh proxy"
proxy = "sshProxyServer"

[server.overProxyServer2]
addr = "192.168.10.100"
key  = "/path/to/private_key"
note = "connect use ssh proxy(multiple)"
proxy = "overProxyServer"

ProxyCommand proxy example.

[server.ProxyCommand]
addr = "192.168.10.20"
key  = "/path/to/private_key"
note = "connect use ssh proxy(multiple)"
proxy_cmd = "ssh -W %h:%p proxy"

8. Available authentication method

  • Password auth
  • Publickey auth
  • Certificate auth
  • PKCS11 auth
  • Ssh-Agent auth

password auth example.

[server.PasswordAuth]
addr = "password_auth.local"
user = "user"
pass = "Password"
note = "password auth server"

publickey auth example.

[server.PublicKeyAuth]
addr = "pubkey_auth.local"
user = "user"
key = "~/path/to/key"
note = "Public key auth server"

[server.PublicKeyAuth_with_passwd]
addr = "password_auth.local"
user = "user"
key = "~/path/to/key"
keypass = "passphrase"
note = "Public key auth server with passphrase"

cert auth example.
(pkcs11 key is not supported in the current version.)

[server.CertAuth]
addr = "cert_auth.local"
user = "user"
cert = "~/path/to/cert"
certkey = "~/path/to/certkey"
note = "Certificate auth server"

[server.CertAuth_with_passwd]
addr = "cert_auth.local"
user = "user"
cert = "~/path/to/cert"
certkey = "~/path/to/certkey"
certkeypass = "passphrase"
note = "Certificate auth server with passphrase"

pkcs11 auth example.

[server.PKCS11Auth]
addr = "pkcs11_auth.local"
user = "user"
pkcs11provider = "/usr/local/lib/opensc-pkcs11.so"
pkcs11 = true
note = "PKCS11 auth server"

[server.PKCS11Auth_with_PIN]
addr = "pkcs11_auth.local"
user = "user"
pkcs11provider = "/usr/local/lib/opensc-pkcs11.so"
pkcs11 = true
pkcs11pin = "123456"
note = "PKCS11 auth server"

ssh-agent auth example.

[server.SshAgentAuth]
addr = "agent_auth.local"
user = "user"
agentauth = true # auth ssh-agent
note = "ssh-agent auth server"

9. Port forwarding

Supported Local/Remote/Dynamic port forwarding.
You can specify from the command line or from the configuration file.

command line option

lssh -L 8080:localhost:80 # local port forwarding
lssh -R 80:localhost:8080 # remote port forwarding
lssh -D 10080             # dynamic port forwarding

config file

[server.LocalPortForward]
addr = "localforward.local"
user = "user"
agentauth = true
port_forward_local = "localhost:8080"
port_forward_remote = "localhost:80"
note = "local port forwawrd example"

[server.RemotePortForward]
addr = "remoteforward.local"
user = "user"
agentauth = true
port_forward = "REMOTE"
port_forward_local = "localhost:80"
port_forward_remote = "localhost:8080"
note = "remote port forwawrd example"

If OpenSsh config is loaded, it will be loaded as it is.

Licence

A short snippet describing the license MIT.

Author

blacknon

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].