SSH 权限被拒绝(公钥)

SSH 权限被拒绝(公钥)

我正在尝试从我的本地机器(也运行 Ubuntu 12.04 LTS)连接到 Linode(运行 Ubuntu 12.04 LTS)

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

这与我的 Linode 上的 ssh 设置方式无关,因为我可以使用密钥认证从我的 Windows 机器通过 ssh 连接到它。

.ssh我的本地 Ubuntu 计算机上的目录中,我有我的id_rsaid_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).

答案1

公钥认证

设置您的客户端

  1. 生成您的密钥。

    ssh-keygen
    
  2. 配置 ssh 以使用密钥。

    vim ~/.ssh/config
    

    你的配置文件应该有类似下面的内容:

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

    您可以添加IdentitiesOnly yes以确保在身份验证期间ssh使用指定的IdentityFile密钥文件而不使用其他密钥文件。设置IdentitiesOnly可防止身份验证失败,否则ssh将尝试使用多个密钥登录。设置此项也被认为更安全,因为您不会泄露有关您安装的其他密钥的信息,并且保持不同访问级别之间的密钥分离。

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

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

    例如,ssh-copy-id -i ~/.ssh/id_res.pub -p 22 [email protected]

故障排除

  1. 使用“-vvv”选项
  2. 确保服务器拥有您的公钥 (.pub)。
  3. 确保您的 IdentiyFile 指向您的私钥。
  4. 确保您的.ssh目录具有 700 个权限并且其中的文件具有 600 个权限。
    • ssh-keygen将为您创建具有适当权限的文件和目录
  5. tail -f /var/log/auth.log(在服务器上)并在您尝试登录时监控错误
  6. 如果您有许多密钥文件,请尝试IdentitiesOnly yes限制身份验证以使用单个指定的密钥。

答案2

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

在你的主目录中:

chown -R your_user:your_user .ssh

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

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

答案3

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

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

答案4

还要检查 的值,如果是,则将PasswordAuthentication其更改为。之后不要忘记重新启动 ssh 服务。/etc/ssh/sshd_confignoyes

相关内容