修复Linux中的权限被拒绝(公钥)SSH错误
时间:2020-03-05 15:26:49 来源:igfitidea点击:
使用ssh连接到远程服务器时,报错:
sign_and_send_pubkey: signing failed: agent refused operation Hyman@theitroad: Permission denied (publickey).
如果我们处于从其他来源复制SSH密钥的类似情况下,请让我向我们展示如何解决此SSH错误。
纠正~/.ssh文件夹及其内容的文件权限
根据经验,我们可以在ssh目录及其文件中设置以下权限(私钥,公钥,known_hosts,ssh配置文件等)
内容 | 权限 |
---|---|
.ssh directory | 700 ((drwx------) |
public keys | 644 (-rw-r--r--) |
private keys | 600 (-rw-------) |
authorized_keys | 600 (-rw-------) |
known_hosts | 600 (-rw-------) |
config | 600 (-rw-------) |
我们可能没有所有文件,但这里必须具有公共和私有密钥。
现在,让我们看看如何更改ssh密钥和其他文件的文件权限。
修复权限被拒绝(公钥)错误
因此,问题出在这里。
我们会看到,当我复制文件时,USB是Microsoft的FAT文件格式。
该文件不支持UNIX/Linux文件权限。
因此,复制的ssh密钥的权限更改为777.
对于SSH,文件权限太开放。
完全不允许对公钥或者私钥具有777权限。
这就是为什么SSH在这里拒绝连接的原因。
ls -l .ssh -rwxrwxrwx 1 igi igi 1766 Nov 12 2016 id_rsa -rwxrwxrwx 1 igi igi 398 Nov 12 2016 id_rsa.pub -rwxrwxrwx 1 igi igi 4214 Sep 21 21:39 known_hosts
私钥应仅对用户具有读取和写入权限,而对组和其他用户则没有其他权限。
我们应该使用chmod命令更改权限:
chmod 600 ~/.ssh/id_rsa
同样,公钥不应具有对组和其他组的写入和执行权限。
chmod 644 ~/.ssh/id_rsa.pub
既然我们已经设置了正确的权限,就可以再次连接到ssh。
这时,它将要求管理员密码来解锁密钥。
输入管理员密码,我们应该一切顺利。