当前位置: 首页>>技术问答>>正文


SSH权限被拒绝(publickey)

, , ,

问题描述

我曾尝试搜索以前的问题以获得我的问题的答案,但之前建议的所有答案都不适用于我。

我试图从我的本地机器连接到linode(运行ubuntu 12.04 LTS)(也运行ubnutu 12.04 LTS)

我在本地计算机上创建了一个私钥和公钥,并将我的公钥复制到我的linode的authorized_keys文件中。但是,每当我尝试ssh到我的linode时,我收到错误消息“Permission denied(publickey)。

在我的linode上如何设置ssh不是问题,因为我可以使用密钥身份验证从我的Windows机器上ssh到它。

在我本地ubuntu机器上的.ssh目录中,我有我的id_rsa和id_rsa.pub文件。我是否需要在本地计算机上创建authorized_keys文件?

编辑:这是我运行ssh -vvv -i id_rsa [youruser] @ [yourLinode]时得到的

debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

最佳解决办法

PubKeyAuthentication

设置您的客户

  1. 生成你的密钥

    • ssh-keygen

  2. 配置ssh以使用密钥

    • vim ~/.ssh/config

  3. 将密钥复制到您的服务器

    • ssh-copy-id -i /path/to/key.pub SERVERNAME

您的步骤2中的配置文件应该具有类似于以下内容的内容:

Host SERVERNAME
Hostname ip-or-domain-of-server
User USERNAME
PubKeyAuthentication yes
IdentityFile ./path/to/key

Troubleshooting

  1. 使用”-vvv”选项

  2. 确保服务器具有您的PUBLIC密钥(.pub)。

  3. 确保您的IdentiyFile指向您的私钥。

  4. 确保你的.ssh目录有700个,你的文件有700个权限(rwx ——)。

  5. tail -f /var/log/auth.log(在服务器上)并在您尝试登录时监视错误

次佳解决办法

有时问题来自权限和所有权。例如,如果要以root身份登录,则/root.sshauthorized_keys必须属于root。否则,sshd将无法读取它们,因此无法判断用户是否有权登录。

在您的主目录中:

chown -R your_user:your_user .ssh

至于权利,.ssh为700,authorized_keys为600

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

第三种解决办法

您的客户端不需要authorized_keys

您必须告诉ssh-client实际使用您生成的密钥。有几种方法可以做到这一点。仅用于测试类型ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]。每次要连接到服务器时,都必须提供密码。

如果可行,您可以使用ssh-add .ssh/id_rsa将密钥添加到ssh-agent(您只需为此提供一次密码,只要您不注销/重启就可以使用密码)

第四种办法

还要确保用户的主目录(在服务器上)实际上属于用户ssh’ing(在我的情况下设置为root:root)。

本来应该:

sudo chown username:username /home/username;

第五种办法

我遇到的问题是它在客户端上使用了错误的密钥。我已将id_rsa和id_rsa.pub重命名为其他内容。您可以将它们重命名为默认值,或者在发出ssh命令时,可以像这样使用它

ssh -i ~/.ssh/private_key username@host

第六种办法

还要检查/etc/ssh/sshd_configPasswordAuthentication的值,如果是no则将其更改为yes。不要忘记在此之后重启ssh服务。

第七种办法

我最近用我的网络服务器遇到了这个问题。

我通常会在~/.ssh/authorized_keys2中的所有服务器上保留一份授权​​密钥列表。根据我的经验,sshd默认会查找~/.ssh/authorized_keys~/.ssh/authorized_keys2

对于我的网络服务器,/etc/ssh/sshd_config有此行

AuthorizedKeysFile    %h/.ssh/authorized_keys

代替

AuthorizedKeysFile    %h/.ssh/authorized_keys2

我应用了后者,重新启动了我的ssh守护进程,并使用我的pubkey解决了使用ssh登录的问题。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1193.html,未经允许,请勿转载。