Sab*_*ina 273 windows ssh openssh permissions private-key
我已经在 Windows 7 中安装了 OpenSSH 7.6 以进行测试。SSH 客户端和服务器工作正常,直到我尝试从此窗口访问我的 AWS EC2 盒之一。
看来我需要更改私钥文件的权限。这可以通过chmod
命令在 unix/linux 上轻松完成。
窗户呢?
private-key.ppm 是直接从 AWS 复制的,我猜也是这个权限。
C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3
C:\>ver
Microsoft Windows [Version 6.1.7601]
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).
C:\>
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppm
Warning: Identity file private-key.ppm not accessible: No such file or directory.
ubuntu@192.168.0.1: Permission denied (publickey).
C:\>
Run Code Online (Sandbox Code Playgroud)
iBu*_*Bug 329
在 Windows 资源管理器中找到该文件,右键单击它,然后选择“属性”。导航到“安全”选项卡,然后单击“高级”。
将所有者更改为您,禁用继承并删除所有权限。然后授予自己“完全控制权”并保存权限。现在 SSH 不会再抱怨文件权限太开放了。
它最终应该是这样的:
JW0*_*914 84
密钥只能由它们的目标用户访问,其他帐户、服务或组不能访问。
Cmd
:
::# Set Key File Variable:
Set Key="%UserProfile%\.ssh\id_rsa"
::# Remove Inheritance:
Icacls %Key% /c /t /Inheritance:d
::# Set Ownership to Owner:
:: # Key's within %UserProfile%:
Icacls %Key% /c /t /Grant %UserName%:F
:: # Key's outside of %UserProfile%:
TakeOwn /F %Key%
Icacls %Key% /c /t /Grant:r %UserName%:F
::# Remove All Users, except for Owner:
Icacls %Key% /c /t /Remove:g "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
::# Verify:
Icacls %Key%
::# Remove Variable:
set "Key="
Run Code Online (Sandbox Code Playgroud)
PowerShell
:
# Set Key File Variable:
New-Variable -Name Key -Value "$env:UserProfile\.ssh\id_rsa"
# Remove Inheritance:
Icacls $Key /c /t /Inheritance:d
# Set Ownership to Owner:
# Key's within $env:UserProfile:
Icacls $Key /c /t /Grant ${env:UserName}:F
# Key's outside of $env:UserProfile:
TakeOwn /F $Key
Icacls $Key /c /t /Grant:r ${env:UserName}:F
# Remove All Users, except for Owner:
Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
# Verify:
Icacls $Key
# Remove Variable:
Remove-Variable -Name Key
Run Code Online (Sandbox Code Playgroud)
小智 47
除了 ibug 提供的答案。由于我在 Windows 中使用 ubuntu 系统来运行 ssh 命令。它仍然无法正常工作。所以我做了
sudo ssh ...
Run Code Online (Sandbox Code Playgroud)
然后它起作用了
小智 35
我遇到了类似的问题,但我在工作,无法更改工作计算机上的文件权限。您需要做的是安装WSL,然后将您的密钥复制到 WSL 中隐藏的 ssh 目录:
cp <path to your key> ~/.ssh/<name of your key>
Run Code Online (Sandbox Code Playgroud)
现在您应该可以正常修改权限了。
sudo chmod 600 ~/.ssh/<your key's name>
Run Code Online (Sandbox Code Playgroud)
然后使用 WSL ssh:
ssh -i ~/.ssh/<name of your key> <username>@<ip address>
Run Code Online (Sandbox Code Playgroud)
小智 16
你只需要做至少四件事:
小智 11
在您的密钥上使用以下命令,它适用于 Windows
icacls .\private.key /inheritance:r
icacls .\private.key /grant:r "%username%":"(R)"
Run Code Online (Sandbox Code Playgroud)
Ric*_*h S 10
这似乎与您运行的 OpenSSH 版本有关:
where ssh
返回:
%WinDir%\System32\OpenSSH\ssh.exe
%ProgramFiles%\Git\usr\bin\ssh.exe
Run Code Online (Sandbox Code Playgroud)
ssh -V
返回:
# %WinDir%\System32\OpenSSH\ssh.exe
OpenSSH_7.5p1, without OpenSSL
# %ProgramFiles%\Git\usr\bin\ssh.exe
OpenSSH_7.3p1, OpenSSL 1.0.2k 26 Jan 2017
Run Code Online (Sandbox Code Playgroud)
运行时..\Git\usr\bin\ssh.exe
,它工作正常并且不会抱怨权限,但是运行..\OpenSSH\ssh.exe
会返回以下内容,即使关键 ACL 对我自己来说是完全访问权限,没有别的:
load key "t:\mykeys\rich-private.ppk": invalid format
banana@127.0.0.127: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
以下是使用 Microsoft 工具执行此操作的方法,从一开始就避免了该问题。但它也应该可以解决问题,这意味着您可以使用现有密钥按照这些说明进行操作。
以管理员身份启动 PowerShell/终端并运行以下命令:
Install-Module -Force OpenSSHUtils -Scope AllUsers
# Make sure the service isn't disabled
Get-Service -Name ssh-agent | Set-Service -StartupType Manual
# We need this service as ssh-add depends on it
Start-Service ssh-agent
cat ~\.ssh\example-key.ecdsa | ssh-add -k -
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以icacls
在 Windows中使用而不是chmod
调整文件权限。要授予当前用户读取权限并删除其他所有内容:
Icacls <file name> /Inheritance:r
Icacls <file name> /Grant:r "%Username%":"(R)"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
398155 次 |
最近记录: |