文章目录
- 一、问题描述
- 二、问题尝试解决
- 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。
可以尝试以下步骤:
-
打开 Windows PowerShell 或者命令提示符(cmd)窗口。
-
输入以下命令,安装 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。
可以尝试以下方法:
- 检查你的计算机是否运行的是 Windows 10 1709 或更新的版本,只有这些版本才支持安装 OpenSSH。
- 如果你的计算机符合条件,但是 Add-WindowsCapability 命令仍然无法使用,可以尝试手动安装 OpenSSH。
- 在 GitHub 上有一个名为 “PowerShell/Win32-OpenSSH” 的项目,提供了 Windows 平台的 OpenSSH 安装包,你可以前往该项目页面下载并安装 OpenSSH。
该项目页面的链接为:
https://github.com/PowerShell/Win32-OpenSSH/releases
你可以根据你的计算机系统版本和位数选择对应的安装包下载。安装完成后,重新打开 PowerShell 或者命令提示符窗口,再次尝试 ssh 命令,确认是否安装成功。
2.2 如何手动安装
如果你已经手动下载了 OpenSSH 的安装包,那么你可以按照以下步骤进行安装:
- 解压下载的安装包文件,找到其中的 install 脚本。
- 右键点击 install 脚本文件,选择 “以管理员身份运行”,然后按照提示进行安装。
- 安装完成后,重新打开 PowerShell 或者命令提示符窗口,再次尝试 ssh 命令,确认是否安装成功。
但是我没有找到这个脚本。
尝试以下方法:
- 打开 PowerShell 或者命令提示符窗口,使用 cd 命令进入 OpenSSH 安装包的目录。
- 在该目录下按住 Shift 键,同时点击鼠标右键,会出现一个菜单,其中包含了 “在此处打开 PowerShell 窗口” 或者 “在此处打开命令提示符窗口” 选项,你可以选择其中的任意一项打开对应的窗口。
- 在打开的窗口中输入 .\install 命令,按照提示进行安装。
这种方法相当于以管理员身份运行 PowerShell 或者命令提示符窗口,以便你能够运行 install 脚本并完成 OpenSSH 的安装。
但是继续出错,install 脚本没找到。
2.3 install 脚本找不到
如果你手动下载了 OpenSSH 的安装包,但是找不到 install 脚本,可能是因为下载的安装包不同。以下是一些可能的解决方案:
- 如果你下载的是 OpenSSH 的 Windows 安装程序(),那么你可以双击该程序并按照提示进行安装。安装完成后,你应该可以在 PowerShell 或者命令提示符窗口中使用 ssh 命令了。
- 如果你下载的是 OpenSSH 的源代码,那么你需要先编译该源代码,并在编译完成后手动安装 OpenSSH。编译和安装过程可能会比较复杂,请参考官方文档或者其他相关资料进行操作。
- 如果你下载的是 OpenSSH 的二进制文件(.exe 文件),那么你可能需要查看该文件的使用说明或者手册,以了解如何进行安装和配置。不同的二进制文件可能具有不同的安装方式和配置方法,需要根据具体情况进行操作。
2.4 power shell 开始报错
首次报错内容为:
安装最新的 PowerShell,了解新功能和改进!/PSWindows
. : 无法加载文件 C:\Users\XiaoWang\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。有关详细信息,
请参阅 https://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 执行策略限制了在此系统上运行脚本。为了解决这个问题,你可以尝试以下方法:
- 打开 PowerShell,以管理员身份运行,然后输入以下命令:
Set-ExecutionPolicy RemoteSigned
这将设置 PowerShell 执行策略,允许在此系统上运行本地签名的脚本。
- 如果你不想放宽执行策略,可以手动修改 profile.ps1 文件的权限,以允许它在此系统上运行。你可以使用以下命令将其修改为允许运行:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
这将允许当前用户在此系统上运行任何脚本。
请注意,在更改执行策略或修改文件权限之前,请仔细考虑安全性风险,并确保你知道你所做的事情。
但是还是报错:
报错内容为:
安装最新的 PowerShell,了解新功能和改进!/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,
加载个人及系统配置文件用了 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的路径,可以按照以下步骤进行:
- 打开NVIDIA CUDA Toolkit的安装目录,通常安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA。
- 在CUDA安装目录下,您会看到版本号,例如“v11.4”。进入该目录。
- 在该目录下,您将看到bin和lib文件夹。这些文件夹的路径即为CUDA_BIN_PATH和CUDA_LIB_PATH。
- 可以将这些路径添加到环境变量中,以便在使用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,
这个错误信息与之前的一条类似,提示“表达式或语句中包含意外的标记“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 ~~~~0.0.1.0
命令报错:
Add-WindowsCapability : 请求的操作需要提升。
所在位置 行:1 字符: 1
+ Add-WindowsCapability -Online -Name ~~~~0.0.1.0
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-WindowsCapability], COMException
+ FullyQualifiedErrorId :
这个错误提示是说需要使用管理员权限运行PowerShell命令。您可以按照以下步骤运行PowerShell并以管理员身份运行该命令:
- 按下 Windows 键+X,选择 Windows PowerShell(管理员)。
- 在弹出的窗口中,输入命令 Add-WindowsCapability -Online -Name ~~~~0.0.1.0 并按回车键。
- 等待命令运行完毕。如果一切顺利,该命令将会成功安装 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"
错误: 拒绝访问注册表路径。
这个错误通常是由于缺少管理员权限导致的。请尝试在管理员权限下打开命令行窗口,并重新运行命令。具体操作方法如下:
- 在Windows开始菜单中找到“命令提示符”,右键单击它,然后选择“以管理员身份运行”选项。
- 在管理员权限的命令行窗口中,输入以下命令,然后按Enter键执行:
setx /M PATH "%PATH%;C:\Windows\System32\OpenSSH"
- 关闭命令行窗口,并重新打开一个新的命令行窗口。
- 在新的命令行窗口中,输入“ssh”命令,看看是否能够正常使用OpenSSH客户端。
继续报错:
尝试在 PowerShell 中执行以下命令,以确保 ssh 已被添加到环境变量中:
$env:Path
该命令将显示当前的环境变量路径。请确保它包含 C:\Windows\System32\OpenSSH 目录,因为该目录包含 文件。
如果路径中不包含该目录,请确保您已以管理员身份运行 PowerShell 并正确执行了 setx 命令,如果仍然出现问题,请尝试重新启动计算机。
然而还是不行:
从您提供的信息来看,OpenSSH似乎已安装成功,但是系统仍然无法找到ssh命令。这可能是由于系统环境变量未正确设置导致的。您可以尝试将OpenSSH路径添加到系统环境变量中,以使系统能够找到ssh命令。
首先,您需要在管理员模式下打开PowerShell窗口。然后,运行以下命令:
[]::SetEnvironmentVariable("Path", $env:Path + ";C:\Windows\System32\OpenSSH", []::Machine)
尝试使用下面的命令在当前会话中更新 Path 环境变量,使得系统能够正确找到 ssh 命令:
$env:Path += ";C:\Windows\System32\OpenSSH"
然后再次运行 ssh 命令,应该就能正常使用了。如果还有问题,请尝试在新的命令提示符窗口中尝试。
顺利成功!
测试一下能否远程连接上实验室的电脑:
顺利连接成功!