我正在尝试在Cygwin(在Windows 7中)中使用ssh.exe。我将config
文件复制到c:\cygwin\home\[USERNAME]\.ssh
。当我运行ssh
(例如ssh -vT git@bitbucket.org
)时,出现以下错误:
OpenSSH_5.9p1,OpenSSL 0.9.8r 2011年2月8日,所有者或对/home/[USERNAME]/.ssh/config的权限不正确
如何获取ssh
我的配置文件?
我正在尝试在Cygwin(在Windows 7中)中使用ssh.exe。我将config
文件复制到c:\cygwin\home\[USERNAME]\.ssh
。当我运行ssh
(例如ssh -vT git@bitbucket.org
)时,出现以下错误:
OpenSSH_5.9p1,OpenSSL 0.9.8r 2011年2月8日,所有者或对/home/[USERNAME]/.ssh/config的权限不正确
如何获取ssh
我的配置文件?
Answers:
完成上述操作后,我总是得到以下信息:
total 22
drwxrwxr-x+ 1 jl None 0 Sep 9 18:44 .
drwxrwxr-x+ 1 jl None 0 Sep 9 18:44 ..
-rw-rw---- 1 jl None 129 Jul 1 14:30 config
和上的错误.ssh/config
。因此,我chown
在该.ssh
文件夹上运行,然后chmod
再次像这样:
> chown -R [USERNAME]:users .ssh/
然后:
> chmod -R 600 .ssh/
最后我得到了它的工作:
total 29
drwxrwxr-x+ 1 jl None 0 Sep 9 18:44 .
drwxrwxrwt+ 1 jl None 0 Sep 9 18:44 ..
drw-------+ 1 jl Users 0 Sep 9 18:44 .ssh
编辑(适用于Windows10上的bash)
当您收到错误时..
无法将主机添加到已知主机列表(/PATH_TO_HOME/USERNAME/.ssh/known_hosts)。
确保known_hosts可写
$ chmod 755已知主机
注意:我相信您只需要为私钥设置600
然后,尝试ssh。
当你拿到时..
将“ HOST_IP”(RSA)永久添加到已知主机列表。
您可以更换模式600
$ chmod 600known_hosts
PS:我认为这是Windows 8上的错误。
chown -R [Username]:Benutzer .ssh/
这个答案是从https://superuser.com/a/875934/82032逐字复制的。这是最近cygwin升级后对我有用的唯一答案。
不要忘记ACL
在我剥离ACL文件并重置权限之前,对我没有任何帮助。
#remove ACLs
setfacl -b ~/.ssh/config
#reset permissions
chmod 0600 ~/.ssh/config
您可以getfacl
用来查看文件上的当前ACL。
getfacl ~/.ssh/config
在删除ACL(损坏)之前:
# owner: Administrators
# group: None
user::rw-
group::---
group:Authenticated Users:rwx
group:SYSTEM:rwx
mask:rwx
other:---
之后:(工作中)
# file: config
# owner: myusername
# group: None
user::rw-
group::---
other:---
config
使用Cygwin的ls
命令检查文件的权限:
> c:\cygwin\bin\ls.exe -la c:\cygwin\home\[USERNAME]\.ssh
可能是这样的:
total 5
drwxrwxrwt+ 1 Administrators None 0 Oct 20 17:02 .
drwxr-xr-x+ 1 [USERNAME] None 0 Oct 19 08:15 ..
-rw------- 1 Administrators None 57 Oct 20 16:58 config
配置文件必须属于[USERNAME]。尝试这个:
> c:\cygwin\bin\chown.exe [USERNAME] c:\cygwin\home\[USERNAME]\.ssh\config
ls -la
现在应该显示正确的所有者。如果仍然无法解决问题,请尝试重置模式(权限):
> c:\cygwin\bin\chmod.exe 700 c:\cygwin\home\[USERNAME]\.ssh\config
很简单:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
如果文件是Windows(NTFS)符号链接,则以上操作将无效。您需要使其成为常规文件。我不知道为什么。
如果您没有openssh或cygwin,请使用Chocolatey轻松安装。
choco install cyg-get
打开安装有Chocolatey的Cygwin终端并运行(注意ssh-keygen
会创建新密钥):
cyg-get install openssh
ssh-keygen
cd ~/.ssh && explorer.exe .
验证密钥是否存在(或将密钥替换为所需的密钥),然后在Cygwin shell中:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
或者在极少数情况下,您正在使用Chocolatey的SSH软件包(并从中生成密钥):
chown -R $USER:users /cygdrive/c/Users/$USER/.ssh
chmod -R 600 /cygdrive/c/Users/$USER/.ssh
对于那些使用dir noacl
路径的人,~/.ssh
简单的解决方案是创建本机NTFS符号链接:
cmd# mklink c:\home\.ssh c:\opt\cygwin\home\misc\.ssh
symbolic link created for c:\home\.ssh <<===>> c:\opt\cygwin\home\misc\.ssh
随着noacl
有没有办法来设置其他权限,然后rwxr-xr-x
或rw-r--r--
。由于/
层次结构应该没有noacl
(或应该有acl
),因此您可以在此处创建目录并指向Cygwin应用程序有问题的地方。
mklink /j
的junction
工具。
tldr:您可能已经以管理员身份创建了配置
如果您最终错误地以admin身份创建文件,并尝试在本地权限下使用该文件,则这些解决方案可能会显得过大。
~/.ssh
在PowerShell或%userprofile%\.ssh
cmd中)notepad .\config
$sshPath = '~/.ssh/config'
$content = cat $sshPath
# In case the line above fails, this check will prevent your current config to get deleted
if ($content) {
rm $sshPath
$content | Out-File -en ascii $sshPath
}