OpenSSH/第三方工具
- autossh - 自动重新启动 SSH 会话和隧道
- scanssh - SSH 主机和一些代理类型扫描器
- sshfs - 基于 SFTP 的用户空间文件系统客户端
- sshfp - 从known_hosts文件或ssh-keyscan(1)生成SSHFP DNS记录
- keychain - 在登录之间重复使用 ssh-agent 和/或 gpg-agent
- rsync - 使用增量编码同步文件和目录
- gstm - 管理 SSH 隧道端口重定向的图形界面
- sslh - 协议多路复用器
- sshguard - 带有数据包过滤的入侵检测系统
- ssh-audit - 识别服务器的横幅、密钥交换、加密、MAC、压缩、兼容性和其他信息。
- webcat - 可以使用 WebSockets[1]进行隧道传输,否则与netcat和curl非常相似。
scanssh扫描主机和网络以查找正在运行的服务[2]。它检查服务器的版本号并将结果显示在列表中。它检测 ssh、sftp 和几种类型的 SOCKS、HTTP 和 telnet 代理。
扫描一个小型的子网以查找 ssh 服务器
$ sudo scanssh -n 22 -s ssh 192.168.100.32/26
扫描同一个小型网络以查找 SOCKS 代理
$ sudo scanssh -s socks5,socks4 192.168.100.32/26
可以设置不同的扫描速度,以及随机采样。开放代理检测扫描可检测常见端口上的开放代理。
随机扫描 172.16.1.1 到 172.31.254.254 之间的 1000 个主机,速度为每秒 200 个
$ sudo scanssh -r 200 -p random(1000)/172.16.0.0/12
要扫描的主机和网络可以指定为 IPv4 地址或 CIDR 格式的 IP 前缀,其中包含 IP 地址和网络掩码。可以通过在地址规范的末尾添加冒号来追加端口。扫描主机顺序是随机的,但可以通过以下两个参数进行修改,random 和 split
random(n[,seed])/从指定为扫描目标的范围内选择 n 个随机地址。n 是要在给定网络中随机创建的地址数量,而 seed 是伪随机数生成器的可选种子。例如,可以通过将 'random(10000)/0.0.0.0/0' 指定为地址来对来自互联网的 10000 个随机 IPv4 主机进行采样。
split(s,e)/选择要使用的地址范围的特定段。e 指定并行段数,而 s 是此特定扫描使用的段号。这可用于通过从每个主机扫描不同的段来从多个主机并行扫描。
-n 指定要扫描的端口号。端口以逗号分隔。每个指定的扫描器都会针对此列表中的每个端口运行。默认端口为 22。
扫描端口 22 和 2022 上的 SSH 服务器
$ sudo scanssh -s ssh -n 22,2022 192.168.0.0/24
sshfs基于用户空间文件系统 (FUSE) 接口构建,允许非特权用户创建安全可靠的文件系统框架。它允许通过利用 SFTP 子系统将远程文件系统挂载为本地文件夹。它使用 SFTP 将远程服务器上的目录挂载为本地目录。这样,所有使用应用程序都可以像本地一样与该目录及其内容进行交互。顾名思义,这是在用户空间完成的,而不是像文件系统通常需要的那样在内核中完成。FUSE 具有稳定的 API 库以及与 C、C++ 和 Java 的绑定。在这种情况下,它专门是通过ssh(1)运行的 SFTP 客户端,然后将其挂载为文件系统。
有关sshfs的更多信息,请参见SFTP上的 Cookbook 部分。
sshfp使用存储在known_hosts文件中的公钥或ssh-keyscan(1)提供的公钥生成 SSHFP NS 记录,作为使用 DNS 发布 SSH 密钥指纹的一种方式。这反过来允许在使用之前使用 DNSSEC 查询来验证 SSH 密钥。DNS 中的 SSHFP 资源记录用于存储与主机名关联的 SSH 公共主机密钥的指纹。记录本身包含算法编号、指纹类型和公共主机密钥的指纹。
有关 SSHFP 的详细信息,请参见RFC 4255。
keychain是ssh-agent(1)的另一个管理器,允许多个 shell 和进程(包括cron(8)作业)使用代理持有的密钥。它通常集成到特定于桌面的工具中,如 OS X 上的 Apple Keychain 或 KDE 的 kdewallet。http://www.funtoo.org/en/security/keychain/intro/
rsync是一个文件传输工具,可高效地在计算机之间传输文件。它可以在 SSH 之上运行,也可以使用自己的协议。SSH 是默认协议。http://rsync.samba.org/
有关在脚本中使用rsync进行实时或脚本化备份的示例,请参见自动备份上的 Cookbook 部分。
gstm是管理 SSH 连接,尤其是端口转发的图形界面。http://sourceforge.net/projects/gstm/
sslh是协议多路复用器。它接受指定端口上的连接,并根据客户端发送的第一个数据包转发连接。它可用于在 SSH、SSL、HTTP、OpenVPN、tinc 和 XMPP 之间共享单个端口。https://www.rutschle.net/tech/sslh/README.html
有关带示例的讨论,请参见多路复用部分。
sshguard是一个入侵防御系统。它监控日志以检测不良活动模式,并触发相应的包过滤规则,持续时间越来越长。它可以与除 SSH 之外的其他一些服务一起使用。http://www.sshguard.net/
ssh-audit是一个 Python 脚本,用于收集有关 SSH 服务器的信息。它可以识别使用的横幅、密钥交换、加密、消息认证代码 (MAC) 算法、压缩、兼容性设置以及其他几个与安全相关的方面。https://github.com/arthepsy/ssh-audit
以下工具在使用 OpenSSH 时很有用,但不在本书详细介绍的范围内。尽管如此,它们还是值得一提,足以列出
- netstat – 显示网络连接、路由表、接口统计信息、伪装连接和组播成员资格
- nc 或 netcat – Netcat,TCP/IP 万能工具。
- socat – SOcket CAT,与 netcat 类似的多用途中继。
- nmap – 网络探索工具和安全扫描器。
- tcpdump – 实时显示网络流量。
- telnet – 与其他主机进行未加密的交互。
- pagsh – 创建新的凭证缓存沙箱和进程身份验证组 (PAG)。
- nohup – 调用忽略 HANGUP 信号的进程。
- sudo – 以其他用户身份执行程序。
- lftp – 支持 SFTP 的便捷交互式多协议文件传输文本客户端。
- curl – 支持 SCP 和 SFTP 的多协议文件传输文本客户端。
- tmux – 终端多路复用器。
- ↑ Stefan Tatschner (2020-10-15). "SSH (反向) 通过 Websocket 隧道". 检索于 2020-10-20.
- ↑ Niels Provos; Peter Honeyman (2001). "ScanSSH - 扫描互联网上的 SSH 服务器" (PDF). 密歇根大学信息技术集成中心 (CITI). 检索于 2016-03-05.