如何在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 命令的输出如下所示
注意: 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
(3) 测试无密码 SSH 身份验证
现在尝试从跳转主机 ssh 远程系统
$ ssh kadmin@192.168.1.130
很好,上面的输出确认了我们可以登录到远程系统,而不需要指定任何密码。
注意: 一旦密钥交换和测试完毕,我们应该禁用 root 和其他用户的基于密码的身份验证。
为此,请编辑 /etc/ssh/sshd_config 文件,然后设置以下参数:
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM yes
保存并退出文件,并使用下面的 systemctl 命令重新启动 ssh 服务
$ sudo systemctl restart sshd
另一个要点是远程用户,在我们的例子中 kadmin 应该是 sudo 组的一部分,并且拥有管理权限,这样它就可以执行管理任务。
免责声明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
![]() |
相关文章
-
12-30如何恢复 Linux 系统下被删除的文件
-
12-29基于Seata探寻分布式事务的实现方案
-
12-29IO多路复用模型,多线程IO
-
12-29Redis内存模型、数据结构
-
12-28Elasticsearch查询及聚合类DSL语句宝典
-
12-27SpringBoot构造流程源码分析:Web容器类型推断
-
12-27Golang互斥锁如何实现,互斥锁的多线程并发
-
12-27Go 快速入门指南 - 可见性和作用域
-
12-27Go 快速入门指南 - Golang切片(分片)slice详解
-
12-26是否有必要升级JDK 17,Spring Boot使用JDK17