Linux实现ssh公钥登录的步骤

【3.5】实现Linux上SSH公钥认证的免密码登录需要按照以下步骤进行,这里以两台Linux主机A和B为例:

步骤1:在本地生成SSH密钥对

在主机A上,打开终端,输入以下命令:

ssh-keygen -t rsa

按照提示,选择生成SSH密钥对的类型(通常选择默认的RSA),然后可以选择是否设置密码(直接回车表示无密码)。

步骤2:将公钥复制到目标主机B

使用以下命令将生成的公钥复制到目标主机B上:

ssh-copy-id username@B

这会要求输入目标主机B的用户密码。输入后,公钥将被复制到B主机的~/.ssh/authorized_keys文件中。

步骤3:测试SSH连接

尝试使用SSH连接到目标主机B:

ssh username@B

如果一切设置正确,应该可以无密码登录到目标主机B。

验证是否成功:

  • 成功情况:

    • 执行ssh username@B时,应该直接登录到主机B而无需输入密码。
    • 如果执行ssh -v username@B,可以看到详细的调试信息,其中包括尝试使用公钥进行身份验证。
  • 失败情况和解决方法:

    • 文件权限: 如果~/.ssh~/.ssh/authorized_keys 的权限设置不正确,可能导致身份验证失败。确保这些目录的权限是安全的。
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
      
    • 公钥格式问题: 确保公钥的内容是正确的,没有多余的空格或换行符。
    • SSH服务配置问题: 在目标主机B上,确保SSH服务已正确配置允许公钥身份验证。

注意事项:

  • 在主机A上的~/.ssh/id_rsa.pub 文件是公钥文件,可以在其中找到复制到目标主机B的公钥。
  • 如果使用不同的用户名,确保在命令中替换username为目标主机B上的实际用户名。
  • 在SSH连接时,可以通过添加-v选项查看详细的调试信息,帮助诊断问题。

如果出现问题,根据错误信息进行调试,并根据上述失败情况和解决方法进行修复。

4.0

要在Linux系统中使用SSH公钥实现免密码登录,你需要在本地机器上生成一对密钥,并将公钥复制到远程服务器。以下是具体操作步骤及其命令。

在本地生成密钥对

  1. 打开一个终端。

  2. 运行 ssh-keygen 命令来生成新的密钥对。

    ssh-keygen -t rsa -b 4096
    

    -t rsa 指定了密钥类型为RSA,-b 4096 指定了密钥长度为4096位。

  3. 系统会提示你输入保存密钥对的文件名(默认为 ~/.ssh/id_rsa)。

  4. 接着系统会提示你输入密钥的密码短语(passphrase),不希望设置可以直接按回车跳过。

  5. 成功生成密钥后,你将看到如下信息:

    Your identification has been saved in /your/home/directory/.ssh/id_rsa.
    Your public key has been saved in /your/home/directory/.ssh/id_rsa.pub.
    

将公钥复制到远程服务器

  1. 使用 ssh-copy-id 命令将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。

    ssh-copy-id user@remote_host
    

    其中,user 是远程服务器的用户名,remote_host 是远程服务器的地址或主机名。

  2. 输入远程用户的密码进行认证。

  3. 成功添加后,你将看到类似以下输出:

    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'user@remote_host'"
    and check to make sure that only the key(s) you wanted were added.
    

验证免密码登录是否成功

  1. 现在,尝试使用SSH登录远程服务器,如果一切正常,你应该不需要输入密码:

    ssh user@remote_host
    
  2. 如果设置了密钥密码短语,第一次使用时可能会被要求输入。

  3. 登录成功后,你将进入远程服务器的shell。

处理失败的情况

  • Permission Denied:如果收到“权限拒绝”的消息,请检查远程服务器的 ~/.ssh/authorized_keys 文件权限是否设置正确(应为600),以及 ~/.ssh 目录的权限(应为700)。

  • Connection Refused:如果连接被拒绝,请检查远程服务器是否运行着SSH服务,以及你是否使用了正确的端口和IP地址。

  • No such file or directory:如果出现这个错误,可能是因为远程服务器上不存在 ~/.ssh 目录,你需要手动创建它并设置正确的权限。

  • The agent has no identities:如果碰到这个错误,意味着SSH代理没有加载私钥。可以使用 ssh-add ~/.ssh/id_rsa 来解决。

  • Timeout:如果SSH尝试超时,请检查网络连接,确保远程主机可达,并且SSH端口(默认为22)没有被防火墙阻塞。

记住,任何时候更改了 ~/.ssh/authorized_keys 文件或相关目录和文件的权限,都可能需要重新验证和调整设置。如果遇到问题,查看日志文件通常有助于诊断,例如通过 journalctl -u ssh 或查看 /var/log/auth.log(取决于你的Linux发行版)。


阮一峰大神的文章每读一次都收获满满。必读系列
《SSH密钥登录》
《SSH原理和运用:远程登录》

相关推荐

  1. Linux实现ssh登录步骤

    2023-12-29 12:04:07       61 阅读
  2. Linux 服务器使用 ssh登录

    2023-12-29 12:04:07       57 阅读
  3. SSH中私使用

    2023-12-29 12:04:07       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 12:04:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 12:04:07       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 12:04:07       87 阅读
  4. Python语言-面向对象

    2023-12-29 12:04:07       96 阅读

热门阅读

  1. linux firewalld简介

    2023-12-29 12:04:07       62 阅读
  2. 面试经典150题(55-58)

    2023-12-29 12:04:07       56 阅读
  3. 【数据库】PostgreSQL中的DISTINCT ON和DISTINCT的区别

    2023-12-29 12:04:07       59 阅读
  4. MD5算法

    MD5算法

    2023-12-29 12:04:07      61 阅读
  5. 编程语言的未来?

    2023-12-29 12:04:07       55 阅读
  6. SpringBoot 中实现订单30分钟自动取消的策略

    2023-12-29 12:04:07       60 阅读
  7. Redis使用中的常见问题及解决方案

    2023-12-29 12:04:07       63 阅读
  8. 湘潭大学软件工程头歌多选题-期末考试复习资料

    2023-12-29 12:04:07       59 阅读
  9. MyBatis之配置文件和映射文件

    2023-12-29 12:04:07       47 阅读