autossh 用法

场景

  • 在阿里云上买了 TSDB - influxdb 和开了只读账户,内网地址是 ts-001.influxdata.tsdb.aliyun.com:8086
  • 阿里云有一台拥有外网固定 IP 的机器 A 可以访问 TSDB,IP 是 123.123.123.123
  • 公司内网的开发机器 B 可以通过 ssh 密钥的方式访问 A。
  • 想在公司内网机器 C 安装 chronograf 来查看 TSDB 的数据。

ssh 命令

NAME
    ssh — OpenSSH SSH client (remote login program)

SYNOPSIS
    ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec]
        [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile]
        [-I pkcs11] [-i identity_file] [-J destination] [-L address] [-l login_name]
        [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
        [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command]

DESCRIPTION
    ssh (SSH client) is a program for logging into a remote machine and for executing commands on a remote
    machine.  It is intended to provide secure encrypted communications between two untrusted hosts over an
    insecure network.  X11 connections, arbitrary TCP ports and UNIX-domain sockets can also be forwarded
    over the secure channel.

使用的命令如下:

ssh -NTCqnf -L 0.0.0.0:13555:ts-001.influxdata.tsdb.aliyun.com:8086 root@123.123.123.123
  • N:不执行远程命令,专为端口转发度身打造
  • T:禁止分配伪终端,后面解释关于伪终端
  • C:开启压缩传输模式
  • q:安静模式运行,忽略提示和错误
  • n:重导 stdin 到 /dev/null (实际上是避免读取 stdin),配合 -f 参数使用
  • f: 后台执行 ssh 指令

伪终端

当用 ssh 或 telnet 等登录系统时,系统分配给我们的终端就是伪终端。如果 ssh 使用 -T 选项登录系统时,由于禁用,将无法获得终端;但仍能够获得 shell,只不过看起来像在本地,也没有很多应有的环境变量,例如命令提示符,PS1 等。

当使用命令 ps -ef|grep [b]ash 时会看到显示终端那里是一个问号。

压缩传输模式

如果是一般情况下的敲命令,只会让事情变慢,命令交互对速度还是有要求的,太慢的人会受不了,也容易出错。我们的需求是一个传输需求,因此压缩是有必要的,因为带宽是瓶颈。缺点是 CPU 会略有上升。

autossh

autossh 本身就是个管理、维护 ssh 的命令,所以其参数也只有最基本的 -V(version)、-M(monitoring)、-f(background)。端口转发,反向代理等功能还是 ssh 实现的,我们把参数传给 autossh,然后 autossh 传给 ssh 来实现特定的功能。

NAME
    autossh — monitor and restart ssh sessions
SYNOPSIS
    autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS]
DESCRIPTION
    autossh is a program to start a copy of ssh and monitor it, restarting it as necessary should it die or stop passing traffic.

比之前的命令添加的一个 -M 5678 参数,负责通过 5678 端口监视连接状态,连接有问题时就会自动重连,去掉了一个 -f 参数,因为 autossh 本身就会在 background 运行。

autossh -M 5678 -NTCqnf -L 0.0.0.0:13555:ts-001.influxdata.tsdb.aliyun.com:8086 root@123.123.123.123

相关阅读

如果觉得我的文章对您有用,请在支付宝公益平台找个项目捐点钱。 @Victor Nov 14, 2020

奉献爱心