在 Windows Terminal 中建立 SSH 连接配置

Windows 提供可在 Windows 终端中使用的内置 SSH 客户端和 SSH 服务器。在本教程中,你将了解如何在 Windows Terminal 中设置使用 SSH 的配置文件。

版本说明:原文页面最后更新于 2024-05-30,并将此功能标为预览版。这是原文版本的说明,不代表当前 Windows Terminal 或 SSH 整体仍处于预览阶段。

访问 Windows SSH 客户端和 SSH 服务器

最新版本的 Windows 10 和 Windows 11 包含基于 OpenSSH(一个使用 SSH 协议进行远程登录的连接工具)的内置 SSH 服务器和客户端。 OpenSSH 加密客户端与服务器之间的所有流量,从而遏止窃听、连接劫持和其他攻击。

默认情况下,OpenSSH 客户端和 OpenSSH 服务器位于以下目录:C:\Windows\System32\OpenSSH。 你还可以检查它是否存在于“Windows 设置”>“系统”>“可选功能”中,然后在添加的功能中搜索“OpenSSH”。

Windows 设置的“系统 > 可选功能”页面,搜索 OpenSSH 后显示 OpenSSH Client 和 OpenSSH Server

图:Microsoft 官方文档中的 Windows 可选功能页面。截图显示 OpenSSH 客户端与服务器是两个独立组件;设置入口和界面名称可能随 Windows 版本而变。

有关如何配置 OpenSSH 的详细信息,请参阅 Windows 的 OpenSSH 服务器配置。

补充:客户端与服务器的区别。从这台电脑连接远端,只需本机具备 SSH 客户端,远端运行可访问的 SSH 服务;不需要为此在本机启用 SSH 服务器。只有要接受传入 SSH 连接的主机才需要相应服务器配置。参见 Microsoft 的 OpenSSH 入门说明。

创建配置文件

你可以在命令提示符下执行 ssh user@machine 启动 SSH 会话;原文以随后输入密码的身份验证流程为例。要让 Windows Terminal 启动配置文件时执行这条命令,可在 settings.json 文件 的 profiles.list 数组中,向一个配置文件对象添加 commandline 设置。

{
  "name": "user@machine ssh profile",
  "commandline": "ssh user@machine"
}

有关详细信息,请参阅:

指定起始目录

若要指定 Windows 终端调用的 ssh 会话的起始目录,可以使用以下命令:

{
  "commandline": "ssh -t bob@foo \"cd /data/bob && exec bash -l\""
}

原文说明:-t 标志强制执行伪终端分配。 这可用于在远程计算机上执行任意基于屏幕的程序,例如实现菜单服务。 将需要使用转义双引号,因为 bourne 外壳派生物不会为单引号中的字符串执行任何额外分析。

修正:JSON 转义与 shell 引用是两层规则。这里的 \" 是为了在 JSON 字符串中表示双引号;JSON 解码后,命令才交给后续命令行处理。Bash 单引号会保留其中字符的字面值,双引号仍允许部分展开。原文把这两层规则连在一起说明,容易产生误解;不能据此认为 SSH 命令必须普遍使用双引号。参见 JSON 字符串语法与 Bash 引用规则。

补充:远端 shell 前提。这段示例假定远端存在 /data/bob 且已安装 Bash;&& 使后面的 exec bash -l 仅在切换目录成功后执行,-l 启动登录 shell。它不是适用于所有远端操作系统的通用命令。

有关更多信息,请参阅:

资源

补充:完整的 profiles.list 结构示例

这是为说明嵌套位置新增的完整 JSON 示例,包含前文两种连接配置。已有 settings.json 时,把需要的配置对象合并进现有 profiles.list 数组,保留原有设置,不要用这个最小示例覆盖整个文件。

{
  "profiles": {
    "list": [
      {
        "name": "user@machine ssh profile",
        "commandline": "ssh user@machine"
      },
      {
        "name": "bob@foo /data/bob",
        "commandline": "ssh -t bob@foo \"cd /data/bob && exec bash -l\""
      }
    ]
  }
}

连接前:user、machine、bob、foo 和 /data/bob 都是示例占位值,并非真实账号、主机或凭据。替换为自己有权访问的目标。第一次连接时,应通过可信的独立渠道向服务器管理员核对主机密钥指纹,确认一致后再接受;遇到不符或意外变化,应先停止并查明原因。不要把密码或私钥内容写入 commandline。身份验证方式也可能是密钥,并不总是输入密码。参见 OpenSSH 的主机密钥验证说明。

来源与许可

原文:教程:Windows 终端中的 SSH;作者:mattwojo(Microsoft 文档作者);原文页面显示的最后更新日期:2024-05-30。© Microsoft 2026。

正文与原文截图依据 MicrosoftDocs/terminal 仓库的 Creative Commons Attribution 4.0 International(CC BY 4.0)许可使用。本文以官方中文文档为基础整理,调整术语和版式,并明确标注了技术补充与修正;不表示 Microsoft 对本文提供认可。商标权不因该许可而转让。封面为原创概念图。

原文示例代码依据同仓库的 MIT 许可使用,完整许可如下:

The MIT License (MIT)
Copyright (c) Microsoft Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
associated documentation files (the "Software"), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial 
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容