SSH解决密钥匹配且有权限的Permission denied (publickey).

公司使用的服务器搬迁之后,大家都连上了,就我连不上。显示Permission denied (publickey).

我确定我的私钥和公钥是正确的,且我有权限。

最后我尝试去问gpt。

我把ssh -v myusername@ip之后的日志发给了它,它告诉我:

看起来连接到远程主机时出现了公钥验证失败的问题。在你的 SSH 配置中,它试图使用 /Users/myusername/.ssh/gitlab_id-rsa 这个私钥来进行身份验证,但远程主机拒绝了这个密钥。

有几个可能的原因导致这个问题:

  1. 密钥不匹配: 你的私钥可能与远程主机上的公钥不匹配。这可能是由于你的公钥未正确添加到远程主机的 authorized_keys 文件中,或者你的私钥与远程主机的公钥不匹配。

  2. 密钥权限: 你的私钥文件可能具有不正确的权限。私钥文件应该只能由所有者读取和写入。你可以通过运行 chmod 600 /Users/myusername/.ssh/gitlab_id-rsa 来设置正确的权限。

  3. 其他身份验证方法: 远程主机可能没有配置使用公钥验证作为唯一的身份验证方法。在这种情况下,你可能需要使用其他的身份验证方法,比如密码验证。

你可以尝试以下步骤来解决问题:

  • 确保你的公钥已经正确添加到远程主机的 authorized_keys 文件中。
  • 检查你的私钥文件权限是否正确,确保它只能由你自己读取和写入。
  • 如果可能,尝试使用其他的身份验证方法,比如密码验证,以确认问题是否与公钥验证有关。

 我就给它说,前两点我都检查但是还连不上。

如果你已经确保了公钥已正确添加到远程主机的 authorized_keys 文件中,并且私钥文件的权限也正确设置,但仍然无法连接,那么可能有一些其他问题导致了连接失败。以下是一些可能的解决方法:

  1. 检查服务器日志: 尝试查看远程主机的系统日志,通常位于 /var/log/auth.log/var/log/secure。在连接失败时,这些日志可能会提供有关拒绝访问的详细信息。

  2. 确认公钥格式: 确保你的公钥文件的格式正确,并且每个公钥都以正确的格式添加到远程主机的 authorized_keys 文件中。公钥应该以 ssh-rsassh-ed25519 或其他支持的算法开头,并且每个公钥应该单独占据一行。

  3. 尝试其他身份验证方法: 有时,远程主机可能配置了其他身份验证方法,如密码验证或使用 SSH 代理。你可以尝试使用这些方法进行连接,以确定问题是否与公钥验证有关。

  4. 检查防火墙设置: 确保你的连接不受到防火墙或网络设置的限制。如果你有访问权限,可以尝试暂时关闭防火墙并重新尝试连接。

  5. 确认 SSH 服务正在运行: 确保远程主机上的 SSH 服务正在运行并监听正确的端口(通常是端口 22)。你可以通过在远程主机上运行 sudo systemctl status sshd(对于使用 systemd 的系统)或 sudo service ssh status(对于使用 SysV init 的系统)来检查 SSH 服务的状态。

如果你仍然无法解决问题,你可能需要联系远程主机的管理员或技术支持团队,以获取更进一步的帮助和调试。提供详细的错误消息和日志将有助于他们更快地诊断并解决问题。

 然后我就找日志,发给了它。

根据你提供的日志信息,有几个问题可能导致连接失败:

  1. Invalid user / Connection closed by invalid user:SSH 连接尝试使用了一些无效的用户名,比如 "demo", "git", "dmdba", "hadoop", "bigdata", "flink", "tomcat"。这些可能是攻击者尝试使用的常见用户名。你可以考虑限制 SSH 访问只允许有效的用户登录。

  2. Authentication refused: bad ownership or modes for directory /home/myusername/.ssh:这个错误可能是由于用户的 .ssh 目录的权限设置不正确导致的。确保 .ssh 目录的权限应该是 700,并且该目录及其中的文件应该是用户所有的。你可以运行以下命令来修复权限问题:

    chmod 700 /home/myusername/.ssh
    chown -R myusername:myusername /home/myusername/.ssh
  3. Connection closed by authenticating user root:有人尝试使用 root 用户进行连接。这是一个不安全的做法,因为攻击者通常会尝试使用 root 用户名进行暴力破解。你应该禁用 root 用户直接登录,并使用一个普通用户进行 SSH 访问,然后再通过 su 或 sudo 提升权限。

你可以采取这些措施来提高服务器的安全性,并防止未经授权的访问。

于是我就在服务器上试了一下chmod 700,然后就连上了!感谢AI!

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值