13.4 SSH 服务与工具

SSH 与 OpenSSH 概述

SSH 即 Secure Shell(安全 shell),是一种通过加密方式安全使用 shell 的方法,通常用于远程登录和管理系统。OpenSSH(Open Secure Shell)是 SSH 协议的一种实现。

OpenSSH 是 FreeBSD 基本系统中内置的第三方工具。OpenSSH 位于 /crypto/openssharrow-up-right,通过 ChangeLog 可以简单地获取当前内置的版本号。

SSH 服务端配置方法

本小节将介绍如何配置 SSH 服务。

允许 root 登录 SSH

安全提示

从系统安全角度考虑,通常不建议允许 root 用户直接通过 SSH 登录,应使用普通用户登录后通过 susudo 切换到 root 权限。如必须启用,请务必确保系统采用强密码或密钥认证。

技巧

视频教程见 004-FreeBSD14.2 允许 root 登录 SSHarrow-up-right

编辑文件 /etc/ssh/sshd_config,去掉相应行首的 # 并根据需要将参数设置为 yesno

PermitRootLogin yes          # 允许 root 登录
PasswordAuthentication yes   #(可选)设置是否使用普通密码验证,如果不设置此参数则使用 PAM 认证登录,安全性更高

技巧

如果找不到 #PasswordAuthentication no 这一行,请确认修改的是 /etc/ssh/sshd_config 文件,而不是 /etc/ssh/ssh_config。只有 sshd_config 是 SSH 服务的配置文件。

开启 SSH 服务

本小节将介绍如何开启 SSH 服务。

重启 sshd 服务:

如果提示找不到 sshd,请执行下一命令启用 sshd 服务:

然后再重启 sshd 服务:

SSH 密钥登录

本小节将介绍如何配置 SSH 密钥登录。

生成密钥

本小节将介绍如何生成 SSH 密钥对。

生成 SSH 密钥对(公钥和私钥):

OpenSSH 7.0 及以上版本默认禁用了 ssh-dss(DSA)公钥算法。FreeBSD 13.0 使用的是 OpenSSH_7.9,因此可直接使用默认值生成密钥。

配置密钥

本小节将介绍如何配置 SSH 密钥。

检查权限(默认创建的权限如下):

生成验证公钥:

使用 WinSCP 将私钥和公钥保存到本地后,可删除服务器上的多余文件:

修改 sshd 配置文件

本小节将介绍如何修改 sshd 配置文件。

编辑 /etc/ssh/sshd_config 文件。

sshd_config 文件中找到对应配置项并按需修改,去掉行首 #,并将参数设置为 yesno,如下所示:

重启 sshd 服务

本小节将介绍如何重启 SSH 服务。

重启 SSH 服务以应用配置更改:

使用 Xshell 登录即可,输入密钥密码,导入私钥 id_rsa,即可登录。

如果使用其他 ssh 软件无法登录,请自行转换密钥格式。

SSH 工具

本小节将介绍 FreeBSD 自带的 SSH 客户端及其他常用 SSH 工具。

FreeBSD 自带 SSH 客户端,可用于连接其他已安装 SSH 服务的设备,使用方法如下:

如使用 SSH 连接到远程主机 192.168.31.1 的 1022 端口,用户名为 ykla:

技巧

在 FreeBSD 上使用 SSH 连接时,终端对应的 TTY 是哪个?

WinSCP

本小节将介绍 WinSCP 工具的使用。

SCP 即 Secure Copy(安全复制),是一种用于在不同设备间安全传输文件的工具,其功能类似于安全版的 cp 命令。

WinSCP 是对 SCP 命令的图形化封装软件,同时支持 FTP 等多种协议,可方便地在 Windows 系统与 Linux 或 BSD 系统之间传输文件。

WinSCP 官方下载地址:https://winscp.net/eng/download.phparrow-up-right 备份arrow-up-right

自 OpenSSH 9.0 起,scp 命令默认使用 SFTP 协议进行文件传输。WinSCP 默认即是 SFTP

需要注意,OpenSSH 的版本号可能因远程目标操作系统而异。

显示当前系统中 SSH 客户端的版本信息:

上面的输出,OpenSSH 的主要版本号为 9.7,用户无需任何修改即可使用 WinSCP。

Xshell

本小节将介绍 Xshell 工具的使用。

Xshell 是 Windows 平台上的一款功能强大的终端工具,支持串口、SSH 和 Telnet 协议。

Xshell 下载地址(输入用户名和邮件即可):

https://www.netsarang.com/zh/free-for-home-schoolarrow-up-right 备份arrow-up-right

如果提示需要重新验证,请打开上面的网站重新安装一遍即可。

MobaXterm

本小节将介绍 MobaXterm 工具的使用。

MobaXterm 是一款集成了 SCP 功能和多种网络工具的终端软件。

MobaXterm 目前不支持中文,下载地址 https://mobaxterm.mobatek.net/download-home-edition.htmlarrow-up-right,左右任选。

MobaXterm
MobaXterm

鼠标操作方式与 Xshell 类似。

PuTTY

本小节将介绍 PuTTY 工具的使用。

下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.htmlarrow-up-right

PuTTY 界面操作相对不便,不支持多语言(i18n)(中文版注入木马等arrow-up-right 备份arrow-up-right),其安全性存在已知漏洞(CVE-2024-31497arrow-up-right),通常作为其他软件的组件间接使用。

Termius

本小节将介绍 Termius 工具的使用。

Termius

Termius 下载地址:https://termius.com/download/arrow-up-right

目前不支持中文,使用需要登录和注册。

Termius 的鼠标操作方式与 PuTTY 类似,右键操作与 Xshell 不同。

保持 SSH 不断线

本小节将介绍如何保持 SSH 连接不断线。

传统的 screen

本小节将介绍如何使用 screen 工具保持 SSH 连接。

screen 是英文“屏幕”的意思,它提供一个虚拟终端环境用于操作。

使用 pkg 安装:

或者使用 ports 安装:

screen 使用方法:

使用 -S 可以指定 xxx 为名字,方便找到。

然后就可以进行 ssh 连接了,后续可以关闭这个窗口或软件,不影响 ssh。

查看有哪些正在运行的 screen?

列出当前用户下所有 screen 会话,包括已附着和分离的会话:

Detached 的可以直接 -r 恢复。

Attached 的必须先离线再恢复:

mosh:移动的 shell

本小节将介绍如何使用 mosh 工具保持 SSH 连接。

moshmobile shell,移动的 shell。

Mosh 适合在移动设备(如手机、平板)通过移动网络远程控制服务器时使用。

Mosh 不支持多窗口、分屏模式,也不支持多个客户端连接同一服务器。客户端重启或切换设备时无法自动重新连接。若需实现这些功能,可在 Mosh 会话中使用 GNU Screen、OpenBSD tmux 等终端多路复用器。——Mosh: A State-of-the-Art Good Old-Fashioned Mobile Shellarrow-up-right 备份arrow-up-right

要使用 mosh:① 服务端和客户端都需要配置相同的 UTF-8 编码,② 双方都需要安装 mosh。

使用 pkg 安装:

或者使用 ports 安装:

编辑 ~/.login_conf 文件,加入:

  • 默认的系统:

  • 已中文化的系统(配置 locale 设置):

客户端也需进行相同的配置。由于 Mosh 是为移动终端设计的,本例使用安卓设备上的 JuiceSSHarrow-up-right 备份arrow-up-right 软件进行测试。

下载地址:https://play.google.com/store/apps/details?id=com.sonelli.juicessharrow-up-right

juicessh

点击“服务端命令”,设置如下:

将 mosh 服务器新会话的语言环境设置为 zh_CN.UTF-8。

其他不用变:用户名、密码和 ssh 的相同。亦需要端口 22 进行验证。

列出系统中所有监听的 IPv4 套接字:

根据上述输出,可见主机端口为 60001。需要放通 60000-61000 端口arrow-up-right 备份arrow-up-right

测试连接:

juicessh 的 mosh
juicessh 的 mosh
juicessh 的 mosh

断开测试:

juicessh 的 mosh 断开 WiFi
juicessh 的 mosh 再次恢复连接 WiFi

可以看到,在断开后有提示,重连网络后自动恢复,像是没有断开一样(已结合 screen 使用)。

参考文献

附录:OpenSSH 服务端配置详解

本附录将详细介绍 OpenSSH 服务端的配置。

/crypto/openssh/sshd_configarrow-up-right 是默认的 SSHD 配置文件。

对 OpenSSH 服务端配置简单注解如下。

在 OpenSSH 默认分发的 sshd_config 中,选项采用的策略是:

  • 尽可能地写出选项及其默认值,但保持为注释状态。(把默认值写出来供参考,但故意注释掉,若不显式覆盖,实际生效的仍将是这些值);

  • 未被注释的选项将覆盖默认值。(即通过显式覆盖来生效)

请注意,FreeBSD 的某些默认值与 OpenBSD 不同,并且 FreeBSD 还有一些额外的选项。

本配置文件版本:blocklist: Rename blacklist to blocklistarrow-up-right

最后更新于