Windows/Linux双平台OpenSSH安装与使用教程 – wiki词典

我无法将教程写入文件,因为我目前没有创建文件的权限。不过,我已经为您准备好了完整的教程内容。您可以直接复制下面的 Markdown 文本并将其保存为 .md 文件。


Windows/Linux 双平台 OpenSSH 安装与使用超详细教程

简介

SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地执行网络服务。它通过一个安全的通道,在两个网络设备之间创建一个加密的连接,从而实现安全的远程登录、文件传输和命令执行。OpenSSH 是 SSH 协议的最流行和最广泛使用的开源实现。

本教程将详细指导您如何在 Windows 和 Linux 这两个主流操作系统上安装、配置和使用 OpenSSH,让您轻松掌握安全的远程管理能力。


一、Windows 平台 OpenSSH 安装与配置

自 Windows 10 (1809版本) 和 Windows Server 2019 开始,微软已将 OpenSSH 客户端和服务器作为系统的可选功能内置,安装变得异常简单。

1. 检查是否已安装

首先,我们可以检查系统是否已经安装了 OpenSSH。

打开 PowerShellCMD,输入以下命令:

powershell
ssh -V

如果看到类似 OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2 的输出,说明 OpenSSH 客户端已安装。

2. 通过图形界面 (GUI) 安装

这是最简单的方法,推荐初学者使用。

  1. 打开 设置 -> 应用 -> 可选功能
  2. 点击 “添加功能”
  3. 在列表中找到 “OpenSSH 服务器” (OpenSSH Server),选中它,然后点击 “安装”
    • 通常,“OpenSSH 客户端”是默认安装的。如果未安装,也可以用同样的方法安装它。

3. 通过 PowerShell (命令行) 安装

对于喜欢使用命令行的用户,PowerShell 提供了更高效的安装方式。

  1. 管理员身份 打开 PowerShell。
  2. 安装 OpenSSH 服务器:
    powershell
    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  3. 安装 OpenSSH 客户端 (如果需要):
    powershell
    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

4. 启动并配置 SSH 服务

安装完成后,需要启动 SSH 服务器并设置为开机自启。

  1. 启动服务:
    powershell
    Start-Service sshd
  2. 设置服务为自动启动:
    powershell
    Set-Service -Name sshd -StartupType 'Automatic'
  3. 确认服务状态:
    powershell
    Get-Service sshd

    您应该能看到 StatusRunningStartupTypeAutomatic

5. 配置防火墙

为了让外部设备能够连接到您的 Windows SSH 服务器,必须在防火墙中创建一个允许规则。

  1. 通过 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 服务。

  1. 启动服务:
    bash
    sudo systemctl start sshd
  2. 设置服务为开机自启:
    bash
    sudo systemctl enable sshd
  3. 检查服务状态:
    bash
    sudo systemctl status sshd

    看到 active (running) 字样即表示服务已成功运行。

3. 配置文件简介 (可选)

OpenSSH 服务器的主要配置文件位于 /etc/ssh/sshd_config。您可以使用文本编辑器 (如 nanovim) 对其进行修改以增强安全性。

例如,您可以:
* 修改默认端口: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,或者服务器环境特殊,可以使用手动复制。

    1. 在本地电脑上,读取并复制公钥内容:
      “`bash
      # Linux/macOS/Git Bash on Windows
      cat ~/.ssh/id_rsa.pub

      Windows CMD/PowerShell

      type %USERPROFILE%.ssh\id_rsa.pub
      ``
      复制终端输出的所有内容 (从
      ssh-rsa` 开始)。

    2. 登录到远程服务器,将公钥粘贴到 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。

    1. 连接到 SFTP 服务器:
      sftp <用户名>@<服务器IP>
    2. 进入 SFTP 会话后,可以使用以下命令:
      • ls:列出远程目录文件。
      • lls:列出本地目录文件。
      • cd / lcd:切换远程/本地目录。
      • get <文件名>:下载文件。
      • put <文件名>:上传文件。
      • exit:退出会话。

总结

通过本教程,您应该已经掌握了在 Windows 和 Linux 平台上安装和使用 OpenSSH 的核心技能。无论是为了远程管理服务器、自动化部署任务,还是安全地传输文件,SSH 都是一个不可或缺的强大工具。强烈建议您优先使用密钥认证方式,以最大限度地保障系统安全。

滚动至顶部