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

news2024/12/23 15:36:37

文章目录

  • 一、问题描述
  • 二、问题尝试解决
    • 2.1 ssh的问题
    • 2.2 如何手动安装
    • 2.3 install 脚本找不到
    • 2.4 power shell 开始报错
    • 2.5 继续安装ssh
  • 三、输入 ssh 再报错

一、问题描述

最近在测试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 命令,应该就能正常使用了。如果还有问题,请尝试在新的命令提示符窗口中尝试。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【五一创作】医院手术室麻醉管理系统概述和功能 SQLServer 2008 R2

医院手术室麻醉管理系统概述 1.系统功能概述 手术麻醉管理系统采用下拉式汉化菜单,界面友好,实用性强,设有与住院、病区、药房等系统的软件接口。 系统主要功能有: 手术管理:提供手术病人检索、手术申请、手术安排…

VSCode配置Arduino

综上所周知,Arduino IDE太不智能了,没有代码提示,不能代码跳转,于是乎找一下vscode有啥插件用 在网上找了些教程,也碰到了奇奇怪怪地坑,于是记录一下能成功配置步骤 准备 1.已安装好Arduino IDE 2.已安装好…

Clion开发STM32之串口封装(HAL库)

前提 在开发STM32过程中,芯片提供的串口引脚一般是不会发生变化的,所以为了方便移植,借助HAL提供的注册回调函数自定义,这边重新进行简要的封装此工程开发是以Clion为开发的IDE,用keil只需将对应的文件进行移植即可.文章末尾附带…

Photoshop如何使用选区之实例演示?

文章目录 0.引言1.利用快速选择工具抠图2.制作网店产品优惠券3.利用选区改变眼睛颜色4.抠取复杂的花束5.制作丁达尔光照效果6.利用选区调整图像局部颜色 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及…

STM32F103 系统架构

1、Cortex M3 内核 & 芯片 ARM公司提供内核(如Cortex M3,简称CM3,下同)授权,完整的MCU还需要很多其他 组件。芯片公司(ST、NXP、TI、GD、华大等)在得到CM3内核授权后,就可以把C…

Linux网络基础二

一.应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层。 二.再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化…

VBA替换中文文献引用出现的et al.和and

问题描述:Endnote是常用的文献管理工具,并提供国标模板Chinese Std GBT7714 (numeric).ens,但Endnote在中英文混排上略欠考虑。Chinese Std GBT7714使用序号的形式(******1)对文献进行引用,但有时我们需要以…

python毕业设计之django+vue医院医疗救助系统

(1) 信息发布 当有基金的申请审批通过时,慈善机构信息维护部门应与慈善机构进行对接,保证信息的真实性,信息发布之后患者可以进行相应的基金申请。 (2) 基金管理 此项功能是保证基金信息的动态刷…

HR员工管理的三重境界:管事、管人、管心

在一个公司里,员工来来往往是常态,虽说我们不能替他们决定,但是一定是与公司的管理者有一定的关系。马云曾经说过:“一个员工离职,不外乎两种原因,一是钱没给到位;二是心里委屈了”。一句话就是…

笔记:计算机网络体系结构(OSI七层模型、TCP/IP五层协议)

计算机网络体系结构 计算机网络是一个复杂的、具有综合性技术的系统,它由计算机系统、通信处理机、通信线路和通信设备、操作系统以及网络协议等组成。为了更好地描述计算机网络结构,使计算机网络系统有条不紊地处理工作,需要定义一种较好的…

2023.04.30 学习周报

文章目录 摘要文献阅读1.题目2.摘要3.介绍4.本文贡献5.数据处理6.模型6.1 look - up操作6.2 LSTM6.3 周期模拟及额外因素 7.实验7.1 数据集7.2 基线7.3 实验表现 8.结论 ISOMAP1.基本思想2.欧氏距离3.折线近似曲线4.计算折线长度5.Floyd-Warshall算法6.ISOMAP算法7.总结 数学建…

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

目录 一、商品列表 本关任务 具体要求 结果输出 实现代码 二、商品详情 本关任务 JDBC查询方法封装 商品相关信息介绍 具体要求 结果输出 实现代码 三、商品搜索 编程要求 测试说明 实现代码 四、购物车列表 本关任务 JDBC查询方法封装 购物车相关信息介绍…

IPsec中IKE与ISAKMP过程分析(主模式-消息4)

IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息2)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息3)_搞搞搞高傲的博客…

Jenkins+Docker+gitee 持续部署spring boot 应用教程

目录 参考安装jenkinsci拉取镜像创建目录安装maven启动镜像配置输入密码安装推荐的插件 创建用户密码配置环境变量安装gitee和dingtalk插件创建SpringBoot并创建Dockfile配置gitee的webhook配置构建shell脚本配置监听gitee webhook触发构建 配置dingtalk钉钉通知 参考 Jenkins…

归纳截图小结

文章目录 web服务器、缓存和PHP加速对比没有做软连接http状态码cookie是什么图形管理界面nginx的访问路径LANM架构redisd服务整体框架免密连接kubeletk8s架构图kubeadm、kubectl、kubelet作用k8s集群token失效时,重新创建tokenk8s网络通信OSI总结pod的理解k8s核心知…

springboot+vue高校实验室预约管理系统

开发环境 开发语言:Java 后端框架:springbootweb 前端框架:vue.js 服务器:tomcat 数据库:mysql 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 校实验…

K8S集群原理(IT枫斗者)

K8S集群原理(IT枫斗者) 看图说K8S 先从一张大图来观看一下K8S是如何运作的,再具体去细化K8S的概念、组件以及网络模型。从上图,我们可以看到K8S组件和逻辑及其复杂,但是这并不可怕,我们从宏观上先了解K8S…

【设计模式】责任链模式的设计与示例

前言 责任链模式是一种行为设计模式,执行上它允许请求沿着一条处理链路依次向下传递,每个处理节点都能对当前状态的请求进行处理,满足一定条件后传递给下一个处理节点,亦或者直接结束这一次处理流程。 在现实生产环境中&#xf…

工作流框架研究

工作流框架研究 主流开源框架介绍OsWorkFlowJBPMActivitiFlowableCamundaCamunda 和Flowable对比功能上对比性能上对比 总结 主流开源框架介绍 OsWorkFlow 对于比较简单的流程,OsWorkFlow会是一个比较好的选择,对于复杂的流程就不推荐了,Os…

小 C 的数学(math)

祝大家劳动节快乐!!小手动起来 言归正传┏ (゜ω゜)☞ 题目描述 小 C 想要成为一名 OIer,于是他提前学习数学,为 OI 做好铺垫。这一天,他的数学老师给了一道题:给定正整数 a,以及给定一个区间 …