安全外壳(SSH)

通过安全外壳 (SSH) 可远程管理和配置 Windows IoT 核心版设备

使用 Windows 10 OpenSSH 客户端

重要

Windows OpenSSH 客户端要求 SSH 客户端主机操作系统为 Windows 10 版本 1803(17134)。 此外,Windows 10 IoT 核心版设备还必须运行 RS5 Windows 预览体验计划预览版 17723 或更高版本。

OpenSSH 客户端已作为可选功能添加到 Windows 10 1803(版本 17134)中。 若要安装客户端,可在 Windows 10 设置中搜索“管理可选功能”。 如果已安装功能的列表中未列出 OpenSSH 客户端,请选择“添加功能”。

Add a feature

接下来,在列表中选择“OpenSSH 客户端”,然后单击“安装”。

OpenSSH Client Install

若要使用用户名和密码登录,请使用以下命令:

ssh administrator@host

其中,host 是 Windows IoT 核心版设备的 IP 地址或设备名称。

首次连接时,会看到如下所示的消息:

The authenticity of host 'hostname (192.168.0.12)' can't be established.
ECDSA key fingerprint is SHA256:RahZpBFpecRiPmw8NGSa+7VKs8mgqQi/j2i1Qr9lUNU.
Are you sure you want to continue connecting (yes/no)?

键入“是”并按 Enter。

如果需要以 DefaultAccount 而不是管理员身份登录,则需要生成密钥并使用密钥登录。 在要用于连接到 IoT 设备的桌面中,打开 PowerShell 窗口,并更改为个人数据文件夹(例如 cd ~)

cd ~
ssh-keygen -t rsa -f id_rsa

使用 ssh-agent 注册密钥(可选,用于单一登录体验)。 请注意,必须从通过 ACL 分配给已登录用户(也可以是 Builtin\Administrators and the NT_AUTHORITY\System 用户)的文件夹中执行 ssh-add。 默认情况下,PowerShell 中的 cd ~ 应已足够,如下所示。

cd ~
net start ssh-agent
ssh-add id_rsa

提示

如果收到消息显示 ssh-agent 服务已禁用,可使用 sc.exe config ssh-agent start=auto 启用它

若要启用单一登录,请将公钥追加到 Windows IoT 核心版设备 authorized_keys 文件中。 如果只有一个密钥,请将公钥文件复制到远程 authorized_keys 文件中。

net use X: \\host\c$ /user:host\administrator
if not exist x:\data\users\defaultaccount\.ssh md x:\data\users\defaultaccount\.ssh
copy .\id_rsa.pub x:\data\users\defaultaccount\.ssh\authorized_keys

如果未向 ssh-agent 注册该密钥,则必须在命令行上指定它才能登录:

ssh -i .\id_rsa DefaultAccount@host

如果私钥已注册到 ssh-agent,则只需指定 DefaultAccount@host:

ssh DefaultAccount@host

首次连接时,会看到如下所示的消息:

The authenticity of host 'hostname (192.168.0.12)' can't be established.
ECDSA key fingerprint is SHA256:RahZpBFpecRiPmw8NGSa+7VKs8mgqQi/j2i1Qr9lUNU.
Are you sure you want to continue connecting (yes/no)?

键入“是”并按 Enter。

现在,应会作为 DefaultAccount 进行连接

若要使用管理员帐户进行单一登录,请在 Windows IoT 核心版设备上将公钥附加到 c:\data\ProgramData\ssh\administrators_authorized_keys。

net use X: \\host\c$ /user:host\administrator
copy .\id_rsa.pub x:\data\ProgramData\ssh\administrators_authorized_keys
icacls x:\data\ProgramData\ssh\administrators_authorized_keys /remove "NT AUTHORITY\Authenticated Users"
icaclsx:\data\ProgramData\ssh\administrators_authorized_keys /inheritance:r

还需要设置 administrators_authorized_keys 的 ACL,使其为与同一目录中 ssh_host_dsa_key 的 ACL 相匹配。

icacls x:\data\ProgramData\ssh\administrators_authorized_keys /remove "NT AUTHORITY\Authenticated Users"
icacls x:\data\ProgramData\ssh\administrators_authorized_keys /inheritance:r

使用 PowerShell 设置 ACL

get-acl x:\data\ProgramData\ssh\ssh_host_dsa_key | set-acl x:\data\ProgramData\ssh\administrators_authorized_keys

注意

如果在更改 Windows 10 IoT 核心版设备后看到“远程主机标识已更改”消息,请编辑 C:\Users<username>.ssh\known_hosts 并删除已更改的主机。

另请参阅:Win32-OpenSSH

使用 PuTTY

下载 SSH 客户端

若要使用 SSH 连接到设备,首先需要下载 SSH 客户端(例如 PuTTY)。

连接到设备

  • 若要连接到设备,你首先需要获取设备的 IP 地址。 在启动 Windows IoT 核心版设备后,与该设备相连的屏幕上将显示一个 IP 地址:

    DefaultApp on Windows IoT Core

  • 现在,启动 PuTTY 并在 Host Name 文本框中输入 IP 地址,然后确保选择 SSH 单选按钮。 然后单击“Open”。

    PuTTY Configuration

  • 如果你是首次从计算机连接到设备,你可能会看到以下安全警告。 只需单击 Yes 继续。

    PuTTY Security Alert

  • 如果连接成功,你应在屏幕上看到 login as:,提示你进行登录。
    输入 Administrator 并按 Enter。 然后输入默认密码 p@ssw0rd 作为密码,并按 Enter。

    PuTTY Login

    如果你能够成功登录,你应看到如下内容:

    PuTTY Console

更新帐户密码

强烈建议你更新管理员帐户的默认密码。

若要执行此操作,请在 PuTTY 控制台中输入以下命令,从而使用强密码替换 [new password]

    net user Administrator [new password]

配置 Windows IoT 核心版设备

  • 为了能够从 Visual Studio 2017 部署应用程序,你将需要确保 Visual Studio 远程调试程序正在 Windows IoT 核心版设备上运行。 远程调试器应在计算机启动时自动启动。 若要再次检查,请使用 tlist 命令从 PowerShell 列出所有正在运行的进程。 应有两个 msvsmon.exe 的实例正在设备上运行。

  • 在很长一段时间都处于非活动状态后,Visual Studio 远程调试器可能会超时。 如果 Visual Studio 无法连接到 Windows IoT 核心版设备,请尝试重新启动设备。

  • 你还可以根据需要重命名你的设备。 若要更改“计算机名”,请使用 setcomputername 实用工具:

        setcomputername <new-name>

需要重新启动设备才能使更改生效。 可以使用 shutdown 命令,如下所示:

        shutdown /r /t 0

常用的实用工具

有关可以与 SSH 结合使用的命令和实用工具的列表,请参阅命令行实用工具页面。