我无法将教程写入文件,因为我目前没有创建文件的权限。不过,我已经为您准备好了完整的教程内容。您可以直接复制下面的 Markdown 文本并将其保存为 .md 文件。
Windows/Linux 双平台 OpenSSH 安装与使用超详细教程
简介
SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地执行网络服务。它通过一个安全的通道,在两个网络设备之间创建一个加密的连接,从而实现安全的远程登录、文件传输和命令执行。OpenSSH 是 SSH 协议的最流行和最广泛使用的开源实现。
本教程将详细指导您如何在 Windows 和 Linux 这两个主流操作系统上安装、配置和使用 OpenSSH,让您轻松掌握安全的远程管理能力。
一、Windows 平台 OpenSSH 安装与配置
自 Windows 10 (1809版本) 和 Windows Server 2019 开始,微软已将 OpenSSH 客户端和服务器作为系统的可选功能内置,安装变得异常简单。
1. 检查是否已安装
首先,我们可以检查系统是否已经安装了 OpenSSH。
打开 PowerShell 或 CMD,输入以下命令:
powershell
ssh -V
如果看到类似 OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2 的输出,说明 OpenSSH 客户端已安装。
2. 通过图形界面 (GUI) 安装
这是最简单的方法,推荐初学者使用。
- 打开 设置 -> 应用 -> 可选功能。
- 点击 “添加功能”。
- 在列表中找到 “OpenSSH 服务器” (OpenSSH Server),选中它,然后点击 “安装”。
- 通常,“OpenSSH 客户端”是默认安装的。如果未安装,也可以用同样的方法安装它。
3. 通过 PowerShell (命令行) 安装
对于喜欢使用命令行的用户,PowerShell 提供了更高效的安装方式。
- 以 管理员身份 打开 PowerShell。
- 安装 OpenSSH 服务器:
powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 - 安装 OpenSSH 客户端 (如果需要):
powershell
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
4. 启动并配置 SSH 服务
安装完成后,需要启动 SSH 服务器并设置为开机自启。
- 启动服务:
powershell
Start-Service sshd - 设置服务为自动启动:
powershell
Set-Service -Name sshd -StartupType 'Automatic' - 确认服务状态:
powershell
Get-Service sshd
您应该能看到Status为Running,StartupType为Automatic。
5. 配置防火墙
为了让外部设备能够连接到您的 Windows SSH 服务器,必须在防火墙中创建一个允许规则。
- 通过 PowerShell 创建防火墙规则:
powershell
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
这条命令会创建一个名为sshd的入站规则,允许 TCP 协议的 22 端口 (SSH 默认端口) 通信。
至此,您的 Windows OpenSSH 服务器已完全配置完毕,可以接受来自其他设备的连接了。
二、Linux 平台 OpenSSH 安装与配置
大多数 Linux 发行版会默认安装 OpenSSH 客户端,但服务器端 (sshd) 通常需要手动安装。
1. 安装 OpenSSH 服务器
使用您发行版对应的包管理器进行安装。
-
对于 Debian/Ubuntu 系统:
bash
sudo apt update
sudo apt install openssh-server -
对于 CentOS/RHEL/Fedora 系统:
bash
sudo yum install openssh-server # 对于旧版 CentOS/RHEL
# 或者
sudo dnf install openssh-server # 对于 Fedora 和新版 RHEL/CentOS -
对于 Arch Linux 系统:
bash
sudo pacman -S openssh
2. 启动并配置 SSH 服务
安装后,需要启动并启用 sshd 服务。
- 启动服务:
bash
sudo systemctl start sshd - 设置服务为开机自启:
bash
sudo systemctl enable sshd - 检查服务状态:
bash
sudo systemctl status sshd
看到active (running)字样即表示服务已成功运行。
3. 配置文件简介 (可选)
OpenSSH 服务器的主要配置文件位于 /etc/ssh/sshd_config。您可以使用文本编辑器 (如 nano 或 vim) 对其进行修改以增强安全性。
例如,您可以:
* 修改默认端口: 将 Port 22 修改为其他不常用的端口,如 Port 2222。
* 禁止 root 用户登录: 将 PermitRootLogin 的值改为 no。
* 禁用密码认证 (推荐): 将 PasswordAuthentication 的值改为 no (在配置好密钥登录后)。
重要提示: 每次修改配置文件后,都需要重启 sshd 服务才能使更改生效。
bash
sudo systemctl restart sshd
三、OpenSSH 跨平台使用指南
一旦服务器端配置完毕,您就可以从任何安装了 SSH 客户端的设备上连接它。
1. 基本连接 (密码认证)
这是最基础的连接方式。打开您的终端 (Terminal/PowerShell/CMD)。
语法:
ssh <用户名>@<服务器IP地址或主机名>
示例:
* 从另一台电脑连接到您的 Windows SSH 服务器 (假设用户名为 admin,IP 地址为 192.168.1.10):
ssh [email protected]
* 连接到 Linux SSH 服务器 (假设用户名为 user,IP 地址为 192.168.1.11):
ssh [email protected]
首次连接时,系统会提示您确认服务器的指纹,输入 yes 并回车。然后输入该用户的密码即可登录。
2. 密钥认证 (更安全、更便捷)
密码认证容易被暴力破解。密钥认证是一种更安全、更推荐的登录方式,它使用一对密钥 (公钥和私钥) 进行身份验证,可以实现免密登录。
步骤 1:在客户端生成密钥对
在您的 本地电脑 (您希望从中发起连接的电脑) 上打开终端,执行以下命令:
bash
ssh-keygen -t rsa -b 4096
* -t rsa:指定密钥类型为 RSA。
* -b 4096:指定密钥长度为 4096 位,强度更高。
系统会提示您:
1. 输入文件保存位置: 直接按回车键使用默认位置 (通常是 ~/.ssh/id_rsa)。
2. 输入密码 (passphrase): 您可以设置一个密码来保护您的私钥。如果设置了,每次使用密钥时都需要输入该密码。如果希望完全免密,直接按回车键留空即可。
执行完毕后,会在 ~/.ssh/ 目录下生成两个文件:
* id_rsa:私钥,必须妥善保管,绝不能泄露。
* id_rsa.pub:公钥,可以安全地分享和部署到您想登录的服务器上。
步骤 2:将公钥部署到服务器
您需要将 id_rsa.pub 文件的内容添加到目标服务器的 authorized_keys 文件中。
-
方法 A: 使用
ssh-copy-id(仅限 Linux/macOS 客户端)如果您的本地电脑是 Linux 或 macOS,这是最简单的方法。
bash
ssh-copy-id <用户名>@<服务器IP地址>
输入密码后,该命令会自动将您的公钥追加到服务器上正确的位置。 -
方法 B: 手动复制公钥
如果您的客户端是 Windows,或者服务器环境特殊,可以使用手动复制。
-
在本地电脑上,读取并复制公钥内容:
“`bash
# Linux/macOS/Git Bash on Windows
cat ~/.ssh/id_rsa.pubWindows CMD/PowerShell
type %USERPROFILE%.ssh\id_rsa.pub
``ssh-rsa` 开始)。
复制终端输出的所有内容 (从 -
登录到远程服务器,将公钥粘贴到
authorized_keys文件中:-
对于 Linux 服务器:
bash
mkdir -p ~/.ssh # 确保 .ssh 目录存在
chmod 700 ~/.ssh # 设置正确权限
echo "您复制的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys # 设置正确权限 -
对于 Windows 服务器:
登录到 Windows 服务器,打开 PowerShell:
“`powershell
# 对于非管理员用户,路径通常是 C:\Users\用户名.ssh\authorized_keys
# $authorizedKeyPath = “C:\Users\YourUser.ssh\authorized_keys”
# Add-Content -Path $authorizedKeyPath -Value “您复制的公钥内容”对于管理员账户, 默认文件是 C:\ProgramData\ssh\administrators_authorized_keys
需要特殊权限才能编辑. 推荐先在用户目录操作.
如果确认要用于管理员, 请确保文件存在并有权限写入.
“`
-
-
步骤 3:测试密钥登录
完成公钥部署后,尝试重新连接服务器:
ssh <用户名>@<服务器IP地址>
如果一切顺利,您应该可以直接登录,无需输入密码 (除非您为私钥设置了 passphrase)。
4. 文件传输 (SCP 和 SFTP)
SSH 协议还提供了安全的文件传输能力。
-
scp(Secure Copy)类似于
cp命令,但用于在本地和远程主机之间复制文件。- 从本地上传文件到远程服务器:
scp /path/to/local/file.txt <用户名>@<服务器IP>:/path/to/remote/directory - 从远程服务器下载文件到本地:
scp <用户名>@<服务器IP>:/path/to/remote/file.txt /path/to/local/directory - 复制整个目录 (使用
-r选项):
scp -r /path/to/local/dir <用户名>@<服务器IP>:/path/to/remote/
- 从本地上传文件到远程服务器:
-
sftp(Secure File Transfer Protocol)提供一个交互式的会话,类似于 FTP。
- 连接到 SFTP 服务器:
sftp <用户名>@<服务器IP> - 进入 SFTP 会话后,可以使用以下命令:
ls:列出远程目录文件。lls:列出本地目录文件。cd/lcd:切换远程/本地目录。get <文件名>:下载文件。put <文件名>:上传文件。exit:退出会话。
- 连接到 SFTP 服务器:
总结
通过本教程,您应该已经掌握了在 Windows 和 Linux 平台上安装和使用 OpenSSH 的核心技能。无论是为了远程管理服务器、自动化部署任务,还是安全地传输文件,SSH 都是一个不可或缺的强大工具。强烈建议您优先使用密钥认证方式,以最大限度地保障系统安全。