修复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 directory700 ((drwx------)
public keys644 (-rw-r--r--)
private keys600 (-rw-------)
authorized_keys600 (-rw-------)
known_hosts600 (-rw-------)
config600 (-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。
这时,它将要求管理员密码来解锁密钥。
输入管理员密码,我们应该一切顺利。