我正在尝试在 Cygwin (Windows 7 中) 中使用 ssh.exe。我将一个config
文件复制到c:\cygwin\home\[USERNAME]\.ssh
。当我运行ssh
(例如) 时,我收到以下错误:ssh -vT [email protected]
OpenSSH_5.9p1,OpenSSL 0.9.8r 2011 年 2 月 8 日 /home/[USERNAME]/.ssh/config 上的所有者或权限不正确
我如何ssh
读取我的配置文件?
答案1
按照上述操作后,我总是得到这样的结果:
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 600 已知主机
附言:我认为这是 Windows 8 上的一个错误。
答案2
此答案逐字复制自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:---
答案3
对于unix和OSX
很简单:
chown -R $USER:users ~/.ssh/
chmod -R 600 ~/.ssh/
对于 Windows
如果文件是 Windows (NTFS) 符号链接,则上述操作将不起作用。您需要将其设为常规文件。我不确定为什么。
如果您没有 openssh 或 cygwin,可以使用 chocolatey 轻松安装。
choco install cyg-get
打开 Cygwin 终端使用 chocolatey 安装并运行(注意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
答案4
如果您的 Windows 不是美式英语,请注意:“用户”组的名称与语言环境有关。例如,如果您的 Windows 是西班牙语,则必须使用以下命令更改文件的所有权chown $USER:Usuarios *