如何在Linux下使用密钥设置SSH无密码登录 ?

SSH (Secure Shell) 密钥为我们提供了登录 Linux 和 UNIX 的安全方法。当我们使用 SSH 密钥访问 Linux 系统时,它也被称为无密码 SSH 身份验证。

在这篇文章中,我们将学习如何在 Linux 中使用密钥设置无密码 SSH 身份验证。

实验准备
  • 客户主机 (Rocky Linux) — SSH Client — 192.168.1.135
  • 远程主机 (Ubuntu 20.04) — 192.168.1.130

(1) 使用 SSH -keygen 命令在客户主机上生成 SSH 密钥

登录跳转主机,执行 ssh-keyen 命令,使用 rsa 算法生成公私钥对

$ ssh-keygen -t rsa

此命令将提示您输入公钥和私钥的路径,如果您想保持默认路径,则按 enter 键,并在提示设置密码短语时按 enter 键

ssh-keygen 命令的输出如下所示

Generate-SSH-Keys-Linux

注意: ssh-keygen 命令默认生成的密钥大小为 2048 位。如果你想改变键的大小,那么使用-b 选项后面跟着 size (以位为单位),示例如下所示

$ ssh-keygen -t rsa -b 4096

(2) 复制用户 Public Key 到远程 Linux 系统

使用 ssh-copy-id 命令将用户公钥拷贝到远程 linux 系统用户授权密钥文件中。

Syntax: ssh-copy-id <user-name>@<Remote-Linux-System-IP>

$ ssh-copy-id kadmin@192.168.1.130

ssh-copy-id-command-linux

(3) 测试无密码 SSH 身份验证

现在尝试从跳转主机 ssh 远程系统

$ ssh kadmin@192.168.1.130

ssh-authentication-from-client-linux

很好,上面的输出确认了我们可以登录到远程系统,而不需要指定任何密码。

注意: 一旦密钥交换和测试完毕,我们应该禁用 root 和其他用户的基于密码的身份验证。

为此,请编辑 /etc/ssh/sshd_config 文件,然后设置以下参数:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM yes

保存并退出文件,并使用下面的 systemctl 命令重新启动 ssh 服务

$ sudo systemctl restart sshd

另一个要点是远程用户,在我们的例子中 kadmin 应该是 sudo 组的一部分,并且拥有管理权限,这样它就可以执行管理任务。

以上就是这篇文章的全部内容,我希望你觉得它有用,请在下面的评论区写下你的问题和反馈。

我的开源项目

酷瓜云课堂-开源网校系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Linux使用SSH密码登录,需要执行以下步骤: 1. 生成SSH对:使用ssh-keygen命令生成公和私。在生成对时,可以选择使用默认设置或自定义设置。 2. 将公复制到目标主机:使用ssh-copy-id命令将公复制到目标主机上的~/.ssh/authorized_keys文件中。如果该文件不存在,则需要手动创建。 3. 测试SSH连接:使用ssh命令测试SSH连接是否成功。如果成功,则可以无密码登录目标主机。 需要注意的是,为了保证安全性,应该定期更换SSH对,并且不要将私泄露给他人。 ### 回答2: 在Linux系统中,使用SSH密码登录可以让用户免去每次输入密码的麻烦,同时也增加了登录安全性。下面我将介绍使用SSH密码登录的详细步骤。 第一步:生成SSH对 在本地计算机上生成SSH对,使用命令: ssh-keygen -t rsa 根据提示输入相关参数,如名称和密码等,然后生成公和私文件,一般在~/.ssh/目录下。 第二步:将公复制到远程计算机上 使用以下命令将公复制到远程计算机上: ssh-copy-id user@remote-host 其中user为远程主机的用户名,remote-host为远程主机的IP地址或者域名。 第三步:测试SSH密码登录 使用ssh命令测试SSH密码登录是否成功: ssh user@remote-host 如果一切正常就可以不用输入密码直接登录远程主机了。 需要注意的是,生成的公和私具有敏感性,不应该随意泄漏。同时,在使用SSH密码登录前,请确保本地计算机和远程计算机的SSH服务都已经启动。如果有防火墙或者路由器,请确保已经正确配置相关规则和端口转发。 ### 回答3: SSH是Secure Shell的缩写,是一种加网络协议,可用于远程登录和执行命令。在Linux系统中,用户可以使用SSH密码登录来快速而安全地登录到目标主机,而不必输入每次登录时的密码。 以下是在Linux环境下使用SSH密码登录的步骤: 1. 生成对:使用ssh-keygen命令生成公和私,在终端中输入该命令后,系统提示用户为对指定保存位置和名称。可以接受默认设置或自定义其他位置和名称。执行此操作后,会生成两个文件:一个公文件和一个私文件。 2. 将公复制到目标主机:使用ssh-copy-id命令将公复制到目标主机,这样就可以以无密码方式登录到该主机了。在终端中输入ssh-copy-id命令,然后按提示输入目标主机的用户名和密码。完成后,可通过SSH连接到目标主机,而无需再次输入密码。 3. 测试连接:使用SSH连接到目标主机,确保可以以无密码方式访问目标主机。在终端中输入ssh 命令,后面跟随目标主机的地址或IP地址,即可建立SSH连接。 以上即为在Linux系统下使用SSH密码登录的简要步骤。使用SSH密码登录可以大大减少登录时需要输入的密码,提高了系统的安全性和用户的便利性。需要注意的是,在复制公时,需要确保目标主机上已经安装了SSH服务,并且已经启用了SSH登录功能,则才能成功复制公

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值