如何设置 SSH 免密登录

目录

设置 SSH 无密码登录

禁用 SSH 密码验证

结论


Secure Shell ( SSH )是一种加密网络协议,用于客户端和服务器之间的安全连接,并支持各种身份验证机制。基于密码的身份验证和基于公钥的身份验证是目前两种最流行的身份验证机制。

在本教程中,我们将向您展示如何设置基于 SSH 密钥的身份验证以及如何在不输入密码的情况下连接到 Linux 服务器。

设置 SSH 无密码登录

要在 Linux 中设置 SSH 免密登录,您只需生成公共身份验证密钥并将其附加到远程主机 ~/.ssh/authorized_keys 文件即可。

以下步骤将介绍配置 SSH 免密登录的过程:

  1. 检查现有的 SSH 密钥对。

    在生成新的 SSH 密钥对之前,首先检查您的客户端计算机上是否已有 SSH 密钥,因为您不想覆盖现有密钥。

    运行以下 ls 命令以查看是否存在现有 SSH 密钥:

    ls -al ~/.ssh/id_*.pub

    如果存在现有密钥,您可以使用这些密钥并跳过下一步或备份旧密钥并生成新密钥。

    如果您看到 No such file or directory 或 no matches found 意味着您没有 SSH 密钥,则可以继续执行下一步并生成新密钥。

    1. 生成新的 SSH 密钥对。

    以下命令将生成一个新的 4096 位 SSH 密钥对,并将您的电子邮件地址作为注释:

    ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

    按 Enter 接受则默认文件位置和文件名:

    Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

    接下来,ssh-keygen 工具将要求您键入安全密码。无论您是否想要使用密码短语都取决于您,如果您选择使用密码短语,您将获得额外的安全保护。在大多数情况下,开发人员和系统管理员使用 SSH 而不使用密码,因为它们对完全自动化的流程很有用。如果您不想使用密码短语,请按 Enter

    Enter passphrase (empty for no passphrase):

    整个交互看起来像这样:

  1. 要确认是否已经生成 SSH 密钥,您可以使用以下命令列出新的私钥和公钥:

    ls ~/.ssh/id_*
    /home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
  2. 复制公钥

    现在您已经生成了 SSH 密钥对,为了能够在没有密码的情况下登录到您的服务器,您需要将公钥复制到您要管理的服务器。

    将公钥复制到服务器的最简单方法是使用名为的命令 ssh-copy-id 。在您的本地机器终端类型:

    ssh-copy-id remote_username@server_ip_address

    系统将提示您输入 remote_username 的密码:

    remote_username@server_ip_address's password:

    用户通过身份验证后,公钥将附加到远程用户 authorized_keys 文件,并且将关闭连接。

    如果由于某种原因, ssh-copy-id 本地计算机上没有该实用程序,则可以使用以下命令复制公钥:

    cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    1. 使用 SSH 密钥登录服务器

    完成上述步骤后,您应该能够登录到远程服务器而不会被提示输入密码。

    要测试它只是尝试通过 SSH 登录到您的服务器:

    ssh remote_username@server_ip_address

    如果一切顺利,您将立即登录。

禁用 SSH 密码验证

要为服务器添加额外的安全层,可以禁用 SSH 的密码身份验证。

在禁用 SSH 密码身份验证之前,请确保您可以在没有密码的情况下登录到服务器,并且您登录的用户具有 sudo 权限。

  1. 使用具有 sudo 权限的用户或 root 用户,通过 SSH 密钥登录到远程服务器:

    ssh sudo_user@server_ip_address
    1. 打开 SSH 配置文件 /etc/ssh/sshd_config ,搜索以下指令并按如下方式进行修改:
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    UsePAM no

    完成后保存文件并重新启动 SSH 服务。

    在 Ubuntu 或 Debian 服务器上,运行以下命令:

    sudo systemctl restart ssh

    在 CentOS 或 Fedora 服务器上,运行以下命令:

    sudo systemctl restart sshd

结论

在本教程中,您学习了如何设置基于 SSH 密钥的身份验证,允许您在不提供用户密码的情况下登录到远程服务器。您可以将相同的密钥添加到多个远程服务。

我们还向您展示了如何禁用 SSH 密码身份验证并为您的服务器添加额外的安全层。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSH免密登录配置是通过设置密钥对来实现的,其中公钥存储在需要访问的远程服务器上,私钥则保存在本地计算机上。在配置过程中,需要生成密钥对,并将公钥复制到其他节点上。 首先,使用命令生成密钥对:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 。这将生成一对密钥,其中私钥保存在~/.ssh/id_dsa文件中,公钥则保存在~/.ssh/id_dsa.pub文件中。 接下来,将公钥复制到其他节点上,可以使用命令:ssh-copy-id -i .ssh/id_rsa.pub [email protected] 。这将把公钥复制到目标服务器上,实现了免密登录。 通过上述配置,当你使用SSH连接到其他节点时,就不再需要输入密码,而是直接使用密钥进行身份验证。 这里引用的资料主要介绍了CentOS 6.5中SSH免密登录配置的相关知识点,包括环境设置以及生成密钥对的步骤。如果你对这方面的配置有需求,可以参考这些资料进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [SSH服务器免密登录快速配置](https://blog.csdn.net/snail_bing/article/details/81772982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [CentOS 6.5中SSH免密登录配置教程](https://download.csdn.net/download/weixin_38613681/12845272)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值