FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章
  • 书籍
  • FreeBSD 中文期刊
  • 编辑日志
  • 2025-123 下游项目
    • FreeBSD 发布工程:新主管上任
    • GhostBSD:从易用到挣扎与重生
    • BSD Now 与将来
    • 字符设备驱动教程(第三部分)
    • 学会走路——连接 GPIO 系统
    • FreeBSD 中对 SYN 段的处理
    • FreeBSD 2024 年秋季峰会
  • 2024-1112 虚拟化
    • 字符设备驱动程序教程(第二部分)
    • 面向 Linux 和 Windows 用户的 bhyve
    • Xen 与 FreeBSD
    • Wifibox:一种嵌入式虚拟化无线路由器
    • 嵌入式 FreeBSD:Fabric——起步阶段
    • DGP:一种新的数据包控制方法
    • 会议报告:我在都柏林的 EuroBSDCon 体验
  • 2024-0910 内核开发
    • 字符设备驱动程序教程
    • VPP 移植到了 FreeBSD:基础用法
    • 利用 Kyua 的 Jail 功能提升 FreeBSD 测试套件的并行效率
    • FreeBSD 上的 Valgrind
    • 嵌入式 FreeBSD:探索 bhyve
    • TCP/IP 历险记:FreeBSD TCP 协议栈中的 Pacing
    • 实用软件:实现无纸化(Paperless)
  • 2024-0708 存储与文件系统
    • FreeBSD 中的 NVMe-oF
    • FreeBSD iSCSI 入门
    • 使用 ZFS 原生加密保护数据
    • 嵌入式 FreeBSD:打造自己的镜像
    • TCP LRO 简介
    • 基于 Samba 的时间机器备份
  • 2024-0506 配置管理对决
    • 基本系统中的 mfsBSD
    • rdist
    • Hashicorp Vault
    • 在 GitHub 上向 FreeBSD 提交 PR
    • 悼念 Mike Karels
    • 2024 年 5-6 月来信
    • 嵌入式 FreeBSD 面包板
    • TCP/IP 历险记:TCP BBLog
    • 实用软件:开发定制 Ansible 模块
  • 2024-0304 开发工作流与集成
    • FreeBSD 内核开发工作流程
    • FreeBSD 与 KDE 持续集成(CI)
    • 更现代的内核调试工具
    • 从零开始的 ZFS 镜像及 makefs -t zfs
    • 提升 Git 使用体验
  • 2024-0102 网络(十周年)
    • FreeBSD 中的 RACK 栈和替代 TCP 栈
    • FreeBSD 14 中有关 TCP 的更新
    • if_ovpn 还是 OpenVPN
    • SR-IOV 已成为 FreeBSD 的重要功能
    • FreeBSD 接口 API(IfAPI)
    • BATMAN:更优的可移动热点网络方式
    • 配置自己的 VPN——基于 FreeBSD、Wireguard、IPv6 和广告拦截
    • 实用软件:使用 Zabbix 监控主机
  • 2023-1112 FreeBSD 14.0
    • LinuxBoot:从 Linux 启动 FreeBSD
    • FreeBSD 容器镜像
    • 现在用 Webhook 触发我
    • 新的 Ports 提交者:oel Bodenmann (jbo@freebsd.org)
  • 2023-0910 Port 与软件包
    • 回忆录:与 Warner Losh(@imp)的访谈
    • 在你自己的仓库中定制 Poudriere 源
    • Wazuh 和 MITRE Caldera 在 FreeBSD Jail 中的使用
    • PEP 517
    • CCCamp 2023 旅行报告
  • 2023-0708 容器与云
    • 在 Firecracker 上的 FreeBSD
    • 使用 pot 和 nomad 管理 Jail
    • 会议报告:C 与 BSD 正如拉丁语与我们——一位神学家的旅程
    • 抒怀之旅:与 Doug Rabson 的访谈
    • 基于 Jail 的广告拦截教程
    • 我们收到的来信
  • 2023-0506 FreeBSD 三十周年纪念特刊
    • CheriBSD 近十多年的历程
    • AArch64:成为 FreeBSD 新的一级架构
    • 岁月如梭:我个人的时间线
    • 安装 FreeBSD 1.0:回顾 30 年前
    • ZFS 是如何进入 FreeBSD 的呢?
    • 我不是来自约克郡的,我保证!
    • 回忆录:采访 David Greenman Lawrence
    • FreeBSD 和早期的 Unix 社区
    • 早期的 FreeBSD 移植
    • FreeBSD 30 周年:成功的秘诀
    • FreeBSD 在日本:回忆之旅与今日之实
  • 2023-0304 嵌入式
    • CheriBSD port 和软件包
    • 让我们来试试 ChatGPT
    • GPU 直通
  • 2023-0102 构建 FreEBSD Web 服务器
    • ZFS 的原子 I/O 与 PostgreSQL
    • 虚拟实验室——BSD 编程研讨会
    • ZFS 简介
    • 会议报告:落基山庆祝女性计算机科学家
    • 进行中的工作/征求反馈:数据包批处理
    • 基金会与 FreeBSD 桌面
  • 2022-1112 可观测性和衡量标准
    • 在 FreeBSD 的 DDB 内核调试器中编写自定义命令
    • DTrace:老式跟踪系统的新扩展
    • 基于证书的 Icinga 监控
    • 活动监控脚本(activitymonitor.sh)
    • 实用 IPv6(第四部分)
    • EuroBSDCon 会议报道
    • 实用 Port:Prometheus 的安装与配置
    • 书评:《用火解决问题:管理老化的计算机系统(并为现代系统保驾护航)》Kill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones)
  • 2022-0910 安全性
    • CARP 简介
    • 重构内核加密服务框架
    • PAM 小窍门
    • SSH 小窍门
    • 实用 IPv6(第三部分)
    • 书评:Understanding Software Dynamics(深入理解软件性能——一种动态视角)—— Richard L. Sites 著
    • 访谈:保障 FreeBSD 安全性
    • MCH 2022 会议报告
  • 2022-0708 科研、系统与 FreeBSD
    • 在 FreeBSD 上构建 Loom 框架
    • 教授本科生 Unix 课程
    • FreeBSD 入门研讨会
    • 实用 IPv6(第二部分)
    • 在 2022 年及以后推广 FreeBSD
    • 进行中的工作/征求反馈:Socket 缓冲区
    • FreeBSD 开发者峰会报告
    • 支持 Electromagnetic Field 2022
  • 2022-0506 灾难恢复
    • 使用 FreeBSD 构建高弹性的私有云
    • LLDB 14 —— FreeBSD 新调试器
    • 实用 IPv6(第一部分)
    • 利用 netdump(4) 进行事后内核调试
    • 进行中的工作/征求反馈:FreeBSD 启动性能
    • 实用 Port:在 OpenZFS 上设置 NFSv4 文件服务器
  • 2022-0304 ARM64 是一级架构
    • FreeBSD/ARM64 上的数据科学
    • Pinebook Pro 上的 FreeBSD
    • 嵌入式控制器的 ACPI 支持
    • 进行中的工作/征求反馈:Lumina 桌面征集开发人员
    • 实用 Port:如何设置 Apple 时间机器
  • 2022-0102 软件与系统管理
    • 为 FreeBSD Ports 做贡献
    • 使用 Git 贡献到 FreeBSD Ports
    • CBSD:第一部分——生产环境
    • 将 OpenBSD 的 pf syncookie 代码移植到 FreeBSD 的 pf
    • 进行中的工作/征求反馈:mkjail
    • 《编程智慧:编程鬼才的经验和思考》(The Kollected Kode Vicious)书评
    • 会议报告:EuroBSDCon 2021 我的第一次 EuroBSDCon:一位新组织者的视角
  • 2021-1112 存储
    • 开放通道 SSD
    • 构建 FreeBSD 社区
    • 与完美操作系统同行 27 年
    • 进行中的工作/征求反馈:OccamBSD
    • 通过 iSCSI 导入 ZFS ZIL——不要在工作中这样做——就像我做的那样
  • 2021-0910 FreeBSD 开发
    • FreeBSD 代码审查与 git-arc
    • 如何为 FreeBSD 实现简单的 USB 驱动程序
    • 内核开发技巧
    • 程序员编程杂谈
  • 2021-0708 桌面/无线网
    • 通往 FreeBSD 桌面的直线路径
    • FreeBSD 13 中的人机接口设备 (HID) 支持
    • Panfrost 驱动程序
    • 用 Git 更新 FreeBSD
    • FreeBSD 的新面孔
    • 想给你的桌面加点佐料?
  • 2021-0506 安全
    • 七种提升新安装 FreeBSD 安全性的方法
    • copyinout 框架
    • 使用 TLS 改善 NFS 安全性
    • Capsicum 案例研究:Got
    • 对 Jail 进行安全扫描
  • 2021-0304 FreeBSD 13.0
    • 展望未来
    • FreeBSD 13.0 工具链
    • FreeBSD 13.0 中有新加载器吗?
    • TCP Cubic 准备起飞
    • OpenZFS 中的 Zstandard 压缩
    • 会议报告:FreeBSD 供应商峰会
    • Git 不够吗?
  • 2021-0102 案例研究
    • Tarsnap 的 FreeBSD 集群
    • BALLY WULFF
    • Netflix Open Connect
    • FreeBSD 的新面孔
    • 写作学者的 FreeBSD
    • 在世界之巅
  • 2020-1112 工作流/持续集成(CI)
    • FreeBSD Git 快速入门
    • 使用 syzkaller 进行内核 Fuzzing
    • Mastering Vim Quickly 书评
    • 线上会议实用技巧
    • 在控制台上进行网络监控
  • 2020-0910 贡献与入门
    • 采访:Warner Losh,第 2 部分
    • 代码审查
    • 撰写良好的提交消息
    • 如何在不是程序员的情况下做出贡献——成为 FreeBSD 译者
    • 如何成为文档提交者
    • 谷歌编程之夏
    • 为 FreeBSD 期刊撰写文章
    • 你为什么使用 FreeBSD
    • FreeBSD 的新面孔
  • 2020-0708 基准测试/调优
    • FreeBSD Friday
    • 采访:Warner Losh,第 1 部分
    • 构建和运行开源社区
    • 在 FreeBSD 上轻松搭建我的世界(Minecraft)服务器
    • FreeBSD 的新面孔
  • 2020-0506 网络性能
    • 内核中的 TLS 卸载
    • 访谈:Michael W Lucas
    • FreeBSD 桌面发行版
    • 使用 Poudriere 进行 Port 批量管理
    • FreeBSD 的新面孔
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 登录选项
  • 断开挂起的 SSH 会话
  • 隐藏的登录脚本
  • 廉价而有效的 VPN
  • SSH 在其中如何(以及何时)发挥作用?
  • 下面是具体操作方法
  • 注意事项
在GitHub上编辑
导出为 PDF
  1. 2022-0910 安全性

SSH 小窍门

上一页PAM 小窍门下一页实用 IPv6(第三部分)

最后更新于1个月前

  • 原文链接:

  • 作者:BENEDICT REUSCHLING

SSH 是一款多用途工具,几乎所有运行和管理 Unix 机器的人都会使用它,而且用户之间频繁地通过 SSH 登录。作为 SSH 的核心功能,安全加密的登录每天都能派上用场,但这个守护进程还能做更多事情。有很多用例,而我只会介绍我自己使用的一些用例,且非全部。我将从一些基本的加固选项开始,然后再讲一些更高级的用法。

登录选项

想要登录系统的 SSH 用户应使用 SSH 密钥而非键盘交互式认证。在理想情况下,应完全禁用后者(显示密码提示),以防止那些密码脚本小子不断尝试利用弱用户密码闯入安全防护不足的系统。在我为那些技术水平较低的用户运行的某些系统上(我曾试图让他们了解 SSH 密钥,但无济于事),我仍然不得不启用这种认证方式。尽管这令人遗憾,但我仍然可以对系统进行加固,限制登录的用户群,并强制某些用户不使用键盘交互式方法。下面我们逐一来看这些选项。

SSH 守护进程的配置文件是 /etc/ssh/sshd_config。你可以通过 AllowUsers 或 AllowGroups 指令来限制允许登录的用户。即使本地用户尝试登录并输入正确的密码,只要他们不在这些指令中列出的名单中,登录依然会被拒绝。在我的使用场景中,所有不懂技术的用户名都以“abc”开头,后面跟着各自的用户 ID。我们可以使用通配符来匹配这样的用户名,如下所示:

AllowUsers abc*

在重新启动守护进程以使这些更改生效之前,请使用 sshd -t 或者 sshd -T(用于更多测试)来检查 sshd_config 文件的有效性。这一行可以防止脚本小子尝试使用诸如 root、admin 等用户名进行登录。虽然这并非绝对安全,但它确实增加了一道额外的障碍。AllowGroups 指令对一组用户执行相同的限制。用户组在集中管理方面更为方便。你的新同事肯定会非常感谢能立即获得访问权限,而无需先到你的办公室请求进入服务器。如果他们被添加到该组中,他们就可以立即登录;否则,每次都需要修改 AllowUsers 行。当某人离开时也是如此,所以为自己着想,使用用户组来管理 SSH 访问,这样你就不会花费余生在管理整个公司都需要登录的系统的 SSH 访问权限上。

分别使用 DenyUsers 或 DenyGroups 命令也可以拒绝某些用户或用户组的登录。撇开愚人节笑话不谈,这对于在某些用户归还了唯一的服务器室钥匙(或从假期回来之前)时,限制他们访问系统非常有用。处理这些混合条目时,指令的处理顺序为:DenyUsers、AllowUsers、DenyGroups,然后是 AllowGroups。

还可以使用 match 语句限制单个用户的登录方式。这在功能上类似于 if 语句,待匹配发生,它们就会覆盖全局的 sshd_config 设置。文件后面进一步的 match 行可以撤销先前 match 块中所做的设置,但现在我们就保持这个例子简单。

上述系统中,同时使用键盘交互和公钥认证的场景由一个名为 monitoring 的特殊用户来监控。该用户会定期使用自己的专用 SSH 密钥登录,运行某些检查(例如磁盘是否已满?),并将结果反馈给中央监控服务器。由于一些检查会以提升的权限运行,若该用户通过键盘登录被攻破,基本上就意味着获得了 root 访问权限。因此,我们告诉 SSH 服务器在该用户登录时只允许使用公钥认证。match 语句如下所示:

Match User monitoring
 AuthenticationMethods publickey

其他用户仍然使用全局设置,但待出现 monitoring 用户,针对该情况的 AuthenticationMethods 设置就会被覆盖。match 语句的其他匹配条件包括 Group、Host、LocalAddress、LocalPort、RDomain(路由域)和 Address。在这里要小心,不要轻易信任用户声称来自的某个网络,因为这些信息可能会被伪造或重新路由。尽量选择匹配条件越少越好,以避免处理时间过长或者匹配过多项,从而失去匹配的目的。请注意,并非 sshd_config 中的所有关键字都可以在 match 语句中进行更改,但很多是可以的。完整的列表可参见 sshd_config(5)。祝你匹配愉快!

断开挂起的 SSH 会话

你是否曾遇到这样的情况?你远程登录到一台服务器正在工作,突然终端冻结,再也无法发送任何命令;或者,你合上笔记本电脑的盖子后,在另一个网络位置打开,却无法重新连接到原来的会话,导致你被困在终端上?我想你一定会点头同意,所以原因在于:服务器没有检测到可能发生的网络中断,因而无法重新建立连接。如果这让你感到烦恼,不妨看看 net/mosh 包,或许能对你有所帮助。

那么,你如何让冻结的 shell 恢复,或至少正确断开连接?尽管看上去你的 SSH 客户端与服务器之间已经没有任何通信,但服务器仍然能理解一些特殊命令。请在冻结的终端上输入以下命令序列:

Enter ~ .

这会发送一个特殊的中断命令,使服务器立即断开会话,将控制权返回给你的本地 shell 会话。在一个正在运行的会话中,试着按下回车键,然后输入波浪号字符(~)紧跟句点(.)。要动作快些。待成功,你很快就会把它记作一项良好习惯,哪怕只是为了向同事炫耀你的知识。

其他转义序列记录在 ssh(1) 的“ESCAPE CHARACTERS”部分。输入回车、~ 和 ? 的序列会显示出一个转义序列列表。请注意,并非每个 SSH 守护进程都支持所有转义序列,但依我经验,断开连接的功能总是相当可靠。

隐藏的登录脚本

你知道吗?每次用户成功通过 SSH 登录系统时,你都可以让一个脚本自动运行。默认情况下,实现这一功能的文件 /etc/ssh/sshrc 并不存在。当该文件被创建并设置为可执行后,SSH 守护进程会执行其中列出的命令。这个过程发生在读取完环境文件之后、用户的 shell(或指定命令)启动之前。

你可能会问,这有什么用?它可以为该用户运行自定义的初始化例程。例如,一个 shell 脚本可以利用用户登录时的用户名(可通过 $USER 获得),并确保该用户的主目录的访问权限和所有权仍然只限于该用户。如果主目录由于某种原因不存在,则会向标准错误(stderr)输出一条错误信息。实现这一功能的简单脚本可能如下所示:

#!/bin/sh
HOMEDIR=”/home/${USER}”
# Restore restrictive home directory permissions
if [ -d ${HOMEDIR} ]; then
 chmod 0700 ${HOMEDIR}
 chown ${USER}: ${HOMEDIR}
else
  echo “Home directory ${HOMEDIR} does not exist” >&2
fi

确保该文件具有可执行权限,就像任何其他 shell 脚本一样,这样下次有人登录时它就会被激活。其他环境变量也可供使用。请注意,这个脚本会在每次用户登录时运行——即便是通过 scp/sftp 进行文件传输时也会运行。所以不要放入那些执行时间较长的复杂代码,否则用户在完成登录过程前会一直等待。对于那些偷偷在后台进行的操作来说,这是个不错的方法,因为每个成功登录的用户都必须经过这个脚本。

廉价而有效的 VPN

虚拟专用网络(VPN)作为收费服务已经层出不穷。它们通过隧道传输并加密互联网上的数据,实现端点之间的安全连接。这帮助人们在疫情期间保持与办公室的联系,甚至在此之前,当支持人员需要在不合时宜的时间修复服务器以防止业务中断时也发挥了作用。对于某个随机的 Josephine 来说,上述收费服务使得她能够伪装成来自其他国家的网络连接,从而以更低的价格购买东西。这可能涉及机票,甚至是你最喜欢的流媒体服务上尚未发布的某个节目集。虽然这种方法并不总能奏效,但它无疑是一个方便的服务。

SSH 在其中如何(以及何时)发挥作用?

每当我们处于一个不受信任的、未加密的网络中,而我们又不希望别人窥探我们的通信时,这种情况就会发生。这通常出现在火车站、机场、酒店和提供免费公共 WIFI 的图书馆等地。那里的连接通常没有(或加密得不够好)且在多个用户之间共享——这正是基于 SSH 的 VPN 解决方案的理想用例。这对我们来说不需要额外费用,因为我们拥有所有必要的工具。我们只需要一个可以合法登录的、在互联网上公开可达的主机。

具体来说,不是直接从源主机 O 连接到目标主机 D,而是让我们的流量通过主机 P 绕个小弯路。这就可以让网络数据包拥有一个不同的源地址。数据包将由主机 P 获取,并通过 SOCKS 代理转发给你,而不是直接来自你的原始主机 O。目标主机 D 将与主机 P 进行通信,处理所有请求,每个发送给 P 的应答或结果都会转发回 O。SOCKS 代理会允许你的浏览器发送和接收数据包,就像你直接浏览一个正常的网页一样。由于你与主机 P(代理)之间存在转发过程,所以可能会比你平时的速度稍慢,但为了隐藏我们的源地址以及获得额外的加密(而且是免费的),这是非常值得的。

下面是具体操作方法

打开一个新的终端,输入以下命令,将其中的 sshproxyhost.example.com 替换为你在互联网上的 SSH 主机:

$ ssh -vD8080 -fCN sshproxyhost.example.com

这看起来很复杂,所以我们来解释一下所提供的各个选项:

  • -v:让 SSH 输出详细信息(verbose),在你熟悉整个过程后可以省略这个选项。刚开始时,它有助于调试流程,并且会输出你通常看不到的任何错误信息。

  • -D 8080:这定义了用于转发的本地动态端口。在你的本地机器上,指定的端口(在此例中为 8080,你也可以选择其他未被其他守护进程占用的端口)会被打开为本地套接字,而其另一端则为与代理服务器建立的安全连接(在这个过程中创建该连接)。

  • -f:将 SSH 进程放到后台运行,以便 shell 仍然可以接收其他命令。请注意,如果你需要输入密码来登录,这个选项可能不太适用。为此,你可以为这次连接生成一个 SSH 密钥(使用 ssh-keygen(1)),并通过 ssh-copy-id(1) 与代理主机交换密钥,以实现无密码登录。这个选项并非绝对必要,但在整个过程正常运行后非常有用。

  • -C:对加密的 VPN 数据进行压缩。根据你的网络状况和处理器速度,这可能会降低或提高连接速度。你可以试验这个选项,如果在你只住一晚的那家条件较差的酒店服务下速度太慢,就将其移除。

  • -N:SSH 默认期望在远程主机上运行一个交互式 shell,但对于我们的 VPN 来说并不需要。此选项会使 SSH 不打开终端,而仅转发端口——这正是我们所需要的。

这些选项的详细说明可以在 ssh(1) 手册页中找到。当使用 -v 选项时,一个典型会话会输出类似如下的信息:

OpenSSH_8.6p1, LibreSSL 3.3.6
debug1: Reading configuration data /Users/bcr/.ssh/config
debug1: /Users/bcr/.ssh/config line 1: Applying options for *
debug1: /Users/bcr/.ssh/config line 16: Applying options for sshproxyhost.example.com
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
debug1: /etc/ssh/ssh_config line 54: Applying options for *
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: auto-mux: Trying existing master
debug1: Requesting forwarding of dynamic forward LOCALHOST:8080 -> *
debug1: mux_client_request_session: master session id: 7
...
debug1: Connection to port 8080 forwarding to socks port 0 requested.
debug1: channel 3: new [dynamic-tcpip]
...
debug1: channel 8: new [dynamic-tcpip]
debug1: channel 7: free: direct-tcpip: listening port 8080 for sshproxyhost.example.
com port 443, connect from 127.0.0.1 port 58994 to 127.0.0.1 port 8080, nchannels 9

这确认了 VPN 已经建立。下面这行

debug1: Requesting forwarding of dynamic forward LOCALHOST:8080 -> *

这证明了 VPN 已经建立。该行展示了其工作原理:你连接到本地 8080 端口,然后(沿着箭头)建立了通往互联网那广阔而狂野世界(www)的连接,回复数据则沿着相反的方向发送回来。

你的浏览器(或任何需要使用此 VPN 隧道的应用程序)只需在连接设置中配置使用这个 SOCKS 代理。寻找类似“手动代理配置”的选项,将 socks 主机设置为“127.0.0.1”(即上文所述的 localhost),端口设置为 8080(或者你指定的其他端口),并选择 SOCKS5 代理(如果有此选项)。

就是这样。接下来,我们可以通过访问诸如 https://www.whatismyip.com(或类似网站,这些网站会显示你的公网 IP 地址)的服务来检查它是否有效。如果显示的是你在 SSH 命令中使用的主机 IP(在我的例子中是 sshproxyhost.example.com),则说明 VPN 正常工作。无论你接下来在浏览器中访问哪个网站,这些网站都会与这个特定主机建立连接、交换数据,并忠实地将流量转发给你。很不错,不是吗?

注意事项

只要 SSH 连接保持与目标系统的开放,VPN 隧道就处于建立状态。请确保在笔记本电脑休眠后重新建立隧道,因为长时间不活动可能会导致你被断开连接。如果你租用了一台服务器作为代理,或者由他人承担该系统的流量费用,请不要过度使用,因为这可能会增加成本。在这种情况下,这并非免费的解决方案,如果你经常使用,不如直接选择一个专业的 VPN 服务,该服务会为你提供全球多个服务器供选择。

另外,请注意,你并非完全隐形。作为代理服务器使用的 SSH 日志会记录你的登录信息。不要利用此方式进行任何恶意或有害的活动,否则,当你被抓住时,我们可不会把你的下一期《FreeBSD 期刊》寄往那个把你送进 Jail 的星球。

希望这些提示和技巧对你有所帮助,并能在你日常使用 SSH 时提供便利。务必查看客户端(ssh(1))和服务器端(sshd(8))的手册页,以获得更多信息。对于有关 SSH 的所有内容,我强烈推荐 Michael W. Lucas 的《SSH Mastery》一书,它将带来更加有趣和全面的阅读体验。


BENEDICT REUSCHLING 是 FreeBSD 项目的文档提交者,也是文档工程团队的成员。过去,他曾担任 FreeBSD 核心团队成员两个任期。他在德国达姆施塔特应用科学大学管理着一个大数据集群,同时还为本科生教授“Unix for Developers”课程。Benedict 也是每周 bsdnow.tv 播客的主持人之一。

SSH Tips and Tricks