Shell 终端

[Switch to English]

在SSH中最常用的就是shell协议,在OnTheSSH中可用多种方式来打开一个shell终端:

  • 在左侧栏中双击一个远端主机名
  • 在左侧栏中用鼠标点击一个远端主机名,然后点击右侧的“shell终端”按钮
  • 复制一个IP地址到系统剪贴板(详细看后面的SSH便捷连接

shell终端窗口的底部右侧,有功能键和行列数的信息:

  • Ctrl+H: 打开帮助窗口
  • Ctrl+T: 打开设置窗口
  • Lines: 显示shell窗口的行数(字符高度),当鼠标拉伸窗口时,此行数将变化
  • Colnums: 显示shell窗口的列数(字符宽度),当鼠标拉伸窗口时,此列数将变化

帮助窗口

Ctrl+H将打开帮助窗口。

帮助窗口默认会出现在程序窗口的右侧,显示常用shell命令的帮助信息。注意帮助内容和shell终端是联动的,如shell终端中输入’p’字符,帮助窗口自动显示几个以p字符开始的命令,如上图。

设置窗口

Ctrl+T将打开设置窗口。

在这里可以设置显示字体的大小、颜色样式、光标是否闪烁、是否支持输入法。如果勾选下面的“永久保存设置”,则本次设置在以后打开此远端主机shell窗口时也有效,如果不勾选只是当前shell窗口有效。

颜色样式中的hacker(骇客)配色方案,是我比较喜欢的风格。

输入法支持,在中文环境下建议关闭,除非你想在shell终端中直接输入汉字。

鼠标

鼠标在shell终端中,有以下作用:

双击选择单词,同时将选择文字复制到系统剪贴板
选择(拖动)将选择文字复制到系统剪贴板
右键单击将系统剪贴板内容粘贴到光标处
滚轮窗口滚动(使用备用窗口如vim程序时无效)

SSH便捷连接

通常连接一个远端Linux主机,需要在OnTheSSH程序中先创建这个远端主机(在左侧栏中)。某些情况时仅需要临时连接某远端主机,这里提供了一种便捷方法:

复制这个远端主机的“连接信息”到剪贴板,这时程序会识别到这个“连接信息”,并以闪动图标进行提示(在左侧“近期”栏),当点击这个闪动图标将弹出窗口,引导你进行后续的操作。

程序会自动识别剪贴板中的第一个“连接信息”,有以下几种:

  • ip地址,如 192.168.2.45
  • 地址和端口,如 10.2.3.4:2222
  • 地址、端口和用户名,如 test@127.0.0.1:800
  • 地址、端口、用户名和密码,如 gest#passwd@127.0.0.1:800 (当密码中有#字符时,不影响信息的识别,如 gest#1234#$%@127.0.0.1:800, 可识别用户gest密码1234#$%)

这可能对运维人员非常有用,他们平时管理几十个、上百个远端主机,并使用记事本、Excel等工具来记录连接信息,便捷连接功能更适合他们的使用习惯。当要连接到一个远端主机时,可以从记事本或Excel中复制这个主机的连接信息(如 root@10.10.3.4:22)到剪贴板,然后点击“闪动图标”进行SSH连接。

深入SSH协议

最新版(v1.7)的shell终端,显示了SSH连接的“深度”信息,这些信息对技术人员会有所帮助。

当成功连接到一台远端主机时,shell终端开始的几行,以[OnTheSSH]为前缀的,显示了SSH连接的整个过程。我们以上图示例说明:

  • TCP connection to 192.168.152.149:22…OK — 表示客户端(OnTheSSH软件)TCP成功连接到远端主机192.168.152.149的22端口。
  • Exchanged version…OK — 表示交换版本成功,这是SSH密钥交换协议的第一步。这里可以看到服务端是OpenSSH_8.9,系统是Ubuntu。
  • Exchange algorithm…OK — 表示双方交换算法,这是SSH密钥交换协议的第二步。
  • Match algorithm…OK — 表示确定了算法。
    • Key-exchange — 密钥交换算法采用curve25519-sha256
    • host-key — 主机密钥算法采用rsa-sha2-512
    • ecryption — 加密算法采用chacha20-poly1305@openssh.com
    • hmac — 消息验证算法采用hmac-sha2-256
  • Key agreement…OK — 表示双方通过交换公钥,最终确定算法的密钥并通过了验证, 这是SSH密钥交换协议的第三步。
  • Exchange New key…OK — 表示双方都认同前面的密钥计算,这是SSH密钥交换协议的最后一步,后面所有的信息交互都要加密进行。
  • User authentication…OK — 表示用户认证成功。
    • method — 采用password认证方式

最新版(v1.7)增加了对旧系统的支持,下面是连接到一台10多年前的的MacOS系统的示例,可以看到一些老的算法(已被证明不太安全的)的使用:

服务端的版本是OpenSSH6.2,密钥交换算法是diffie-hellman-group14-sha1,主机密钥算法是ssh-rsa,单从安全角度出发它们都需要去升级。和上一张图还有个不同之处,认证方式采用的是keyboard-interactive(键盘交换方式),表示密码是通过问答形式输入的,OnTheSSH内部进行了自动化处理,最终使用起来和password认证方式感觉是一样的。


其他在线文档: