研究生进阶小秘诀——实验室的算力只给了私钥没有给密码,但是明明已经在连接设置的时候选择了密钥地址,但是它还一直要输入密码,怎么解决嘞——


一般那个ssh连接远程服务器的config文件就是按这个格式填的

Host #你给主机设置的名字
  HostName #主机地址
  User #账户名,如果算力没设置一般是user
  Port #端口号,默认22
  IdentityFile #密钥地址
  ForwardAgent yes

一直提示要输入password,这种情况时因为你的私钥文件的 Windows 文件权限过于开放,OpenSSH 出于安全考虑直接忽略了这个私钥,所以退回到要求输入密码,但是我们不知道密码,一直按回车刷新,于是反复出现 Permission denied

#在日志中的核心报错信息是这么写的

Bad permissions. Try removing permissions for user: NT AUTHORITY\Authenticated Users (S-1-5-11) on file 你的密钥地址.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '你的密钥地址' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "你的密钥地址": bad permissions

所以我们需要修改这个私钥文件的权限,我们来看看具体怎么解决

1.以管理员身份打开 PowerShell

2.输入以下代码

# 1.设置你的私钥文件路径
$privateKeyPath = "D:\miyao\kaili_key"

# 2.获取当前登录的 Windows 用户名(通常是你的主账户)
$currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

# 3. 移除所有继承的权限(避免父文件夹权限干扰)
icacls $privateKeyPath /inheritance:r

# 4. 清除所有现有的权限条目(重置为无权限)
icacls $privateKeyPath /remove:g "Everyone" /remove:g "Authenticated Users" /remove:g "Users" /remove:g "Administrators" /remove:g "SYSTEM"

# 5. 仅给当前用户赋予 读取 (R) 权限 (这是 OpenSSH 要求的最低权限)
icacls "$privateKeyPath" /grant:r "${currentuser}:(R)"

你再等一会儿应该就可以连上了,不放心的话可以再检查一下这个私钥文件现在有的权限

#查看私钥文件现有权限
icacls "$privateKeyPath"

补充:

像这样,你将用户名赋值给它的话,没有输出是正常的,因为你的命令是赋值不是输出。

如果你想看看有没有赋值成功,你可以输入:

$currentuser

输出就会显示这个变量现在被什么东西赋值了,用来确认它赋值成功没有。

后面三条指令都会至少有一条这样的输出:

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐