【Win11 | SSH】详细教你如何在Windows 11 下完成OpenSSH的安装(保姆级攻略)

一、问题描述

最近在测试github的连接时,在终端或命令行窗口中,输入以下命令测试你的 SSH 连接是否正常:

ssh -T git@github.com

如果一切正常,命令输出以下信息:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

其中 username 是你的 GitHub 用户名。

但是我的命令出错:

在这里插入图片描述

二、问题尝试解决

2.1 ssh的问题

这个错误提示说明我的操作系统没有找到 ssh 命令,可能是因为我的计算机没有安装 OpenSSH。

可以尝试以下步骤:

  1. 打开 Windows PowerShell 或者命令提示符(cmd)窗口。

  2. 输入以下命令,安装 OpenSSH:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

如果出现提示要求确认,输入 Y 并按回车键。

但是我的操作引起报错!

C:\Users\XiaoWang>Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
'Add-WindowsCapability' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

这个错误提示说明你的操作系统没有找到 Add-WindowsCapability 命令,可能是因为你的计算机版本太老,不支持安装 OpenSSH。

可以尝试以下方法:

  1. 检查你的计算机是否运行的是 Windows 10 1709 或更新的版本,只有这些版本才支持安装 OpenSSH。
  2. 如果你的计算机符合条件,但是 Add-WindowsCapability 命令仍然无法使用,可以尝试手动安装 OpenSSH。
  3. 在 GitHub 上有一个名为 “PowerShell/Win32-OpenSSH” 的项目,提供了 Windows 平台的 OpenSSH 安装包,你可以前往该项目页面下载并安装 OpenSSH。

该项目页面的链接为:

https://github.com/PowerShell/Win32-OpenSSH/releases

在这里插入图片描述
你可以根据你的计算机系统版本和位数选择对应的安装包下载。安装完成后,重新打开 PowerShell 或者命令提示符窗口,再次尝试 ssh 命令,确认是否安装成功。

2.2 如何手动安装

如果你已经手动下载了 OpenSSH 的安装包,那么你可以按照以下步骤进行安装:

  1. 解压下载的安装包文件,找到其中的 install 脚本。
  2. 右键点击 install 脚本文件,选择 “以管理员身份运行”,然后按照提示进行安装。
  3. 安装完成后,重新打开 PowerShell 或者命令提示符窗口,再次尝试 ssh 命令,确认是否安装成功。

但是我没有找到这个脚本。

尝试以下方法:

  1. 打开 PowerShell 或者命令提示符窗口,使用 cd 命令进入 OpenSSH 安装包的目录。
  2. 在该目录下按住 Shift 键,同时点击鼠标右键,会出现一个菜单,其中包含了 “在此处打开 PowerShell 窗口” 或者 “在此处打开命令提示符窗口” 选项,你可以选择其中的任意一项打开对应的窗口。
  3. 在打开的窗口中输入 .\install 命令,按照提示进行安装。

这种方法相当于以管理员身份运行 PowerShell 或者命令提示符窗口,以便你能够运行 install 脚本并完成 OpenSSH 的安装。

但是继续出错,install 脚本没找到。

2.3 install 脚本找不到

如果你手动下载了 OpenSSH 的安装包,但是找不到 install 脚本,可能是因为下载的安装包不同。以下是一些可能的解决方案:

  1. 如果你下载的是 OpenSSH 的 Windows 安装程序(OpenSSH-Win64.zip),那么你可以双击该程序并按照提示进行安装。安装完成后,你应该可以在 PowerShell 或者命令提示符窗口中使用 ssh 命令了。
  2. 如果你下载的是 OpenSSH 的源代码,那么你需要先编译该源代码,并在编译完成后手动安装 OpenSSH。编译和安装过程可能会比较复杂,请参考官方文档或者其他相关资料进行操作。
  3. 如果你下载的是 OpenSSH 的二进制文件(.exe 文件),那么你可能需要查看该文件的使用说明或者手册,以了解如何进行安装和配置。不同的二进制文件可能具有不同的安装方式和配置方法,需要根据具体情况进行操作。

2.4 power shell 开始报错

在这里插入图片描述
首次报错内容为:

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

. : 无法加载文件 C:\Users\XiaoWang\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。有关详细信息,
请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\XiaoWang\Documents\WindowsPowerShell\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS C:\Users\XiaoWang>

这个错误是因为 PowerShell 执行策略限制了在此系统上运行脚本。为了解决这个问题,你可以尝试以下方法:

  1. 打开 PowerShell,以管理员身份运行,然后输入以下命令:
Set-ExecutionPolicy RemoteSigned

这将设置 PowerShell 执行策略,允许在此系统上运行本地签名的脚本。

  1. 如果你不想放宽执行策略,可以手动修改 profile.ps1 文件的权限,以允许它在此系统上运行。你可以使用以下命令将其修改为允许运行:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

这将允许当前用户在此系统上运行任何脚本。

请注意,在更改执行策略或修改文件权限之前,请仔细考虑安全性风险,并确保你知道你所做的事情。

但是还是报错:

在这里插入图片描述

报错内容为:

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

Invoke-Expression : 所在位置 行:1 字符: 536
+ ... em32;C:\Users\XiaoWang\AppData\Local\Microsoft\WindowsApps;"%CUDA_LIB ...
+                                                                  ~
必须在“%”运算符后面提供一个值表达式。
所在位置 行:1 字符: 536
+ ... XiaoWang\AppData\Local\Microsoft\WindowsApps;"%CUDA_LIB_PATH%;%CUDA_B ...
+                                                    ~~~~~~~~~~~~~~
表达式或语句中包含意外的标记“CUDA_LIB_PATH%”。
所在位置 D:\Anaconda\shell\condabin\Conda.psm1:76 字符: 9
+         Invoke-Expression -Command $activateCommand;
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : ExpectedValueExpression,Microsoft.PowerShell.Commands.InvokeExpressionCommand

加载个人及系统配置文件用了 1287 毫秒。

该错误似乎是由于环境变量中的CUDA_LIB_PATH和CUDA_BIN_PATH未定义导致的。请检查您的环境变量,确保这些变量已正确定义。另外,建议您升级您的Anaconda和PowerShell版本以获得更好的支持和性能。

您可以尝试手动添加这些环境变量。打开系统属性,然后点击环境变量,找到CUDA_LIB_PATH和CUDA_BIN_PATH,然后将其值更改为正确的路径。如果这些变量不存在,请单击“新建”按钮并创建它们。另外,建议您升级您的Anaconda和PowerShell版本以获得更好的支持和性能。

CUDA_LIB_PATH和CUDA_BIN_PATH的路径怎么看?

要查看CUDA_LIB_PATH和CUDA_BIN_PATH的路径,可以按照以下步骤进行:

  1. 打开NVIDIA CUDA Toolkit的安装目录,通常安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA。
  2. 在CUDA安装目录下,您会看到版本号,例如“v11.4”。进入该目录。
  3. 在该目录下,您将看到bin和lib文件夹。这些文件夹的路径即为CUDA_BIN_PATH和CUDA_LIB_PATH。
  4. 可以将这些路径添加到环境变量中,以便在使用CUDA时能够正常工作。

但是继续报错:

Invoke-Expression : 所在位置 行:1 字符: 662
+ ... nvvp;C:\Users\XiaoWang\AppData\Local\Microsoft\WindowsApps;"%CUDA_LIB ...
+                                                                  ~
必须在“%”运算符后面提供一个值表达式。
所在位置 行:1 字符: 662
+ ... XiaoWang\AppData\Local\Microsoft\WindowsApps;"%CUDA_LIB_PATH%;%CUDA_B ...
+                                                    ~~~~~~~~~~~~~~
表达式或语句中包含意外的标记“CUDA_LIB_PATH%”。
所在位置 D:\Anaconda\shell\condabin\Conda.psm1:76 字符: 9
+         Invoke-Expression -Command $activateCommand;
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : ExpectedValueExpression,Microsoft.PowerShell.Commands.InvokeExpressionCommand

这个错误信息与之前的一条类似,提示“表达式或语句中包含意外的标记“CUDA_LIB_PATH%”。”,看起来也与CUDA相关。请确认您的CUDA环境变量是否正确设置,并检查在您的环境变量中是否包含了不正确的语法。如果有,请删除并重新设置正确的环境变量。另外,也请确保您的Anaconda环境变量设置正确。

如何修改呢?

可以在Anaconda Prompt中运行以下命令,修改环境变量:

setx CUDA_LIB_PATH "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\lib\x64"
setx CUDA_BIN_PATH "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin"

这里假设CUDA的安装路径为"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1",你可以根据实际情况修改路径。修改完毕后,需要关闭当前的Anaconda Prompt窗口,重新打开一个新的窗口使环境变量生效。

在这里插入图片描述
这个错误信息显示在 D:\Anaconda\shell\condabin\Conda.psm1 的第76行,似乎是一个 Anaconda 的配置文件中有问题,建议暂时先忽略这个错误,因为这个错误不会影响您在 PowerShell 中进行其他操作。如果需要继续排查这个错误,您可以检查该配置文件中是否有错误,或者卸载 Anaconda 后重新安装。

这个错误似乎是由于某些字符未正确转义或引号未正确使用导致的。您可以检查您的代码中涉及的路径和命令,确保它们正确引用了相关的文件和文件夹,并且引号和转义字符正确使用。

例如,在您之前提供的错误中,引号似乎被放错了位置,应该将其放在包含路径的引号中。同时,路径中包含空格,可能需要使用引号将其括起来。

这里不再修改!

2.5 继续安装ssh

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

命令报错:
在这里插入图片描述

Add-WindowsCapability : 请求的操作需要提升。
所在位置 行:1 字符: 1
+ Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-WindowsCapability], COMException
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsCapabilityCommand

这个错误提示是说需要使用管理员权限运行PowerShell命令。您可以按照以下步骤运行PowerShell并以管理员身份运行该命令:

  1. 按下 Windows 键+X,选择 Windows PowerShell(管理员)。
  2. 在弹出的窗口中,输入命令 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 并按回车键。
  3. 等待命令运行完毕。如果一切顺利,该命令将会成功安装 OpenSSH 客户端功能。

在这里插入图片描述
到这里,SSH安装成功!

三、输入 ssh 再报错

我继续输入ssh,没想到再次报错:

在这里插入图片描述
看起来 OpenSSH 已经成功地安装在你的系统上。但是,在运行 ssh 命令之前,你需要在 PowerShell 窗口中打开一个新的终端窗口(因为新的 PATH 环境变量还没有应用到当前窗口)。你可以在 PowerShell 窗口中运行以下命令来打开一个新的终端窗口:

cmd

这将在当前 PowerShell 窗口中启动一个新的命令提示符窗口,但是该窗口已经更新了 PATH 环境变量,所以现在你应该可以在该窗口中运行 ssh 命令了。

在这里插入图片描述
看起来OpenSSH客户端已成功安装,但您在命令提示符或PowerShell中使用ssh命令时仍然遇到问题。这可能是由于路径环境变量未正确配置所导致的。请尝试在命令提示符或PowerShell中使用以下命令,将OpenSSH目录添加到系统的路径环境变量中:

setx /M PATH "%PATH%;C:\Windows\System32\OpenSSH"

然后关闭并重新打开命令提示符或PowerShell窗口,再次尝试运行ssh命令。如果仍然遇到问题,请确认OpenSSH客户端的安装路径是否为C:\Windows\System32\OpenSSH,如果不是,请将上面的命令中的路径替换为实际路径。

但是依旧报错:

(base) C:\Users\XiaoWang>setx /M PATH "%PATH%;C:\Windows\System32\OpenSSH"
错误: 拒绝访问注册表路径。

这个错误通常是由于缺少管理员权限导致的。请尝试在管理员权限下打开命令行窗口,并重新运行命令。具体操作方法如下:

  1. 在Windows开始菜单中找到“命令提示符”,右键单击它,然后选择“以管理员身份运行”选项。
  2. 在管理员权限的命令行窗口中,输入以下命令,然后按Enter键执行:
setx /M PATH "%PATH%;C:\Windows\System32\OpenSSH"
  1. 关闭命令行窗口,并重新打开一个新的命令行窗口。
  2. 在新的命令行窗口中,输入“ssh”命令,看看是否能够正常使用OpenSSH客户端。

继续报错:

在这里插入图片描述
尝试在 PowerShell 中执行以下命令,以确保 ssh 已被添加到环境变量中:

$env:Path

该命令将显示当前的环境变量路径。请确保它包含 C:\Windows\System32\OpenSSH 目录,因为该目录包含 ssh.exe 文件。

如果路径中不包含该目录,请确保您已以管理员身份运行 PowerShell 并正确执行了 setx 命令,如果仍然出现问题,请尝试重新启动计算机。

然而还是不行:

在这里插入图片描述

从您提供的信息来看,OpenSSH似乎已安装成功,但是系统仍然无法找到ssh命令。这可能是由于系统环境变量未正确设置导致的。您可以尝试将OpenSSH路径添加到系统环境变量中,以使系统能够找到ssh命令。

首先,您需要在管理员模式下打开PowerShell窗口。然后,运行以下命令:

[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Windows\System32\OpenSSH", [System.EnvironmentVariableTarget]::Machine)

在这里插入图片描述
尝试使用下面的命令在当前会话中更新 Path 环境变量,使得系统能够正确找到 ssh 命令:

$env:Path += ";C:\Windows\System32\OpenSSH"

然后再次运行 ssh 命令,应该就能正常使用了。如果还有问题,请尝试在新的命令提示符窗口中尝试。

在这里插入图片描述
顺利成功!

测试一下能否远程连接上实验室的电脑:

在这里插入图片描述
在这里插入图片描述
顺利连接成功!

  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值