《每天一个Linux命令》 -- (5)通过sshkey密钥登录服务器

欢迎阅读《每天一个Linux命令》系列!在本篇文章中,将介绍通过密钥生成,使用公钥连接管理服务器。

概念

SSH 密钥是用于安全地访问远程服务器的一种方法。SSH 密钥由一对密钥组成:公钥和私钥。公钥存储在远程服务器上,私钥存储在本地计算机上。

通过公钥连接管理Linux服务器优缺点:
优点:

  • 安全性: 公钥身份验证比密码身份验证更安全。公钥是一个加密的密钥对,私钥保存在客户端,而公钥保存在服务器上。
  • 无需密码: 公钥身份验证消除了密码管理的需求。用户无需记住复杂的密码,而且在服务器上也不需要存储密码。
  • 方便性: 一旦设置了公钥身份验证,用户就可以轻松地连接到服务器,而无需每次都输入密码。
  • 多因素认证: 公钥身份验证可以与其他身份验证方法结合使用,实现多因素认证。例如,可以使用密码和公钥的组合进行认证,提高安全性。

缺点:

  • 密钥管理: 公钥身份验证需要有效地管理密钥对。如果私钥丢失或泄露,可能会导致安全问题。

  • 初次设置复杂性: 初次设置公钥身份验证可能会相对复杂,特别是对于不熟悉密钥管理的用户来说。然而,一旦设置完成,后续的连接将更为简单。

  • 无法处理丢失的私钥: 如果用户丢失了私钥,他们将无法再次连接到服务器,除非管理员重新配置他们的公钥。

  • 不适用于所有场景: 公钥身份验证不适用于所有场景。在某些情况下,可能需要使用其他身份验证方法,如密码身份验证或证书身份验证。

总体而言,使用公钥连接管理Linux服务器提供了更高的安全性和便捷性,但需要合理管理密钥对以确保系统的整体安全。

生成密钥

在本地计算机上生成 SSH 密钥,可以使用 ssh-keygen 命令。

ssh-keygen

提示的意思(可以直接回车,留空默认):

此命令将提示您输入以下信息:

  • 文件名:用于存储密钥的文件名。默认为 id_rsa
  • 密码:用于保护私钥的密码。可以留空。
  • 重复密码:确认密码。

生成密钥后,将在本地计算机上创建两个文件:

  • id_rsa:私钥文件。
  • id_rsa.pub:公钥文件。
[root@chatgpt-test ~]# ll /root/.ssh
总用量 12
-rw-------. 1 root root 1675 12月  8 08:00 id_rsa
-rw-r--r--. 1 root root  399 12月  8 08:00 id_rsa.pub
-rw-r--r--. 1 root root  347 11月 21 05:19 known_hosts

将公钥复制到远程服务器
可以使用 cat 命令+远程命令+重定向组合

cat ~/.ssh/id_rsa.pub | ssh 用户名@远程服务器地址 'cat >> ~/.ssh/authorized_keys'

此命令将将公钥追加到远程服务器上的 authorized_keys 文件中。

演示示例:

假设本地服务器用户名为 root,IP为192.168.31.223,远程服务器的 IP 地址为 192.168.31.162,则生成密钥并将公钥复制到远程服务器的操作如下:

#在本地计算机上生成密钥,执行命令后,根据提示,可以设置私钥密码,或者直接回车3次(默认),生成密钥。
[root@chatgpt-test ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8IlsI9RZn/sDvn10OB5mvm8d+yP/0rVb5cwNQbT1wlg root@chatgpt-test
The key's randomart image is:
+---[RSA 2048]----+
|        .    .E .|
|     . o . . = o.|
|    . +   o . = .|
|   . . + . .   o |
|    . = S o   ...|
|     o . . o  B*=|
|          . o* =%|
|           o o=+=|
|          . ..+BO|
+----[SHA256]-----+

将公钥复制到远程服务器

从192.168.31.223将公钥复制到192.168.31.162

cat ~/.ssh/id_rsa.pub | ssh root@192.168.31.162 'cat >> ~/.ssh/authorized_keys'

注意事项

  • 在生成密钥时,建议使用强密码来保护私钥。
  • 在复制公钥时,请确保远程服务器上的 authorized_keys 文件具有可写权限。

其他方法

也可以使用 cp 命令来将公钥复制粘贴到远程服务器。

或者通过ssh-copy-id 用户名@远程服务器地址,此命令将公钥复制到远程服务器上的 authorized_keys 文件中。

命令操作

使用 SSH 密钥登录远程服务器的命令如下:

ssh [选项] 用户名@远程服务器地址

命令详细解释

ssh 命令的参数如下:

参数说明
选项可选参数,用于指定 SSH 连接的属性。
用户名远程服务器上的用户名。
远程服务器地址远程服务器的 IP 地址或主机名。

命令选项

选项说明
-i指定私钥文件的路径。
-p指定远程服务器的端口号。
-t启用终端模式。
-v显示 ssh 命令执行的详细信息。

注意事项

  • 在使用 SSH 密钥登录远程服务器之前,需要在本地计算机上生成 SSH 密钥并将公钥复制到远程服务器。
  • 可以使用 ssh-keygen 命令生成 SSH 密钥。
  • 可以使用 cat 命令将公钥复制到远程服务器。

sshkey 命令的使用技巧

  • 可以使用选项 -i 指定私钥文件的路径。如果不指定此选项,则 ssh 命令将使用默认的私钥文件。
  • 可以使用选项 -p 指定远程服务器的端口号。如果不指定此选项,则 ssh 命令将使用默认的端口号 22。
  • 可以使用选项 -t 启用终端模式。如果不指定此选项,则 ssh 命令将启用交互式模式。
  • 可以使用选项 -v 显示 ssh 命令执行的详细信息。

以下是一些使用 sshkey 设置完成后演示命令的示例:

示例1:使用默认的私钥文件登录远程服务器

ssh root@192.168.31.162

验证:

[root@chatgpt-test ~]# ssh root@192.168.31.162
Last login: Thu Nov 30 08:24:49 2023 from 192.168.31.223
[root@localhost ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 02:11:32:2a:0f:96 brd ff:ff:ff:ff:ff:ffinet 192.168.31.162/24 brd 192.168.31.255 scope global noprefixroute eth0

示例2:使用指定的私钥文件登录远程服务器

ssh -i ~/.ssh/id_rsa root@192.168.31.162

示例3:使用指定的端口号登录远程服务器

ssh -p 2222 root@192.168.31.162

通过SSH软件登录

soreceCRT无密码登录centos7

将生成的私钥,通过命令sz ~/.ssh/id_rsa.pub下载到本地,通过crt软件读写私钥文件进行登录

即可无秘访问192.168.31.162

  • 设置公钥优先级再前,密码验证再后
    在这里插入图片描述

  • 添加公钥(点击-属性,选择公钥在本机的路径)
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259718.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hanlp自然语言处理如何再Spring Boot中使用

一、HanLP HanLP (Hankcs NLP) 是一个自然语言处理工具包&#xff0c;具有功能强大、性能高效、易于使用的特点。HanLP 主要支持中文文本处理&#xff0c;包括分词、词性标注、命名实体识别、依存句法分析、关键词提取、文本分类、情感分析等多种功能。 HanLP 可以在 Java、Py…

Nginx按指定格式记录访问日志

今天突然想起来一个日志的一个东西,因为拉项目无意中看到了日志文件的一些东西,现在不经常做后端了,加上其他的一些原因吧.有时候有些问题也没想太多,马马虎虎就过了,后来想想还是要记录一下这方面的处理过程吧: 一般我们作为开发人员关注的日志只是在应用程序层面的,我们称它…

网页设计--第6次课后作业

试用Vue相关指令完成对以下json数据的显示。显示效果如下&#xff1a; 其中&#xff1a;gender1 显示为女&#xff0c;gender2显示为男。价格超过30元&#xff0c;显示“有点小贵”。价格少于等于30元&#xff0c;则显示“价格亲民”。 data: {books: [{"id": "…

hook其他调试技巧

输出堆栈信息 通过 android.util.Log 输出当前线程的堆栈跟踪信息。 function showStacks() {Java.perform(function () {console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new() )); }) } 可以在需要的…

3GPP标准查看、下载和几个UE相关系列标准

由于一直做终端侧协议。最近以UE为核心重新下载了一系列文档。 总结并举例一下分类标准。 如何查看3GPP标准列表 实际上在3GPP网站如下链接&#xff1a;Specifications by Series&#xff0c;每个系列以及分类都说的很清楚。 几个系列分类举例 和终端协议层工作比较关系密切…

阿里云国际基于CentOS系统镜像快速部署Apache服务

阿里云轻量应用服务器提供了Windows Server系统镜像和主流的Linux系统镜像&#xff0c;您可以通过该类镜像创建纯净、安全、稳定的运行环境。本文以CentOS 7.6系统镜像为例&#xff0c;介绍如何快速配置Apache服务。 背景信息 注意&#xff0c;阿里云国际通过corebyt注册并充…

Spring Boot 整合 xxl-job 保姆级教程!

文章目录 介绍使用初始化“调度数据库”配置调度中心配置“执行器项目”调度任务 介绍 首先我们介绍一下什么是xxl-job&#xff0c;根据官方定义&#xff0c;XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码…

LeetCode(52)最小栈【栈】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 最小栈 1.题目 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void…

激光打标机在智能手表上的应用:科技与时尚的完美结合

随着科技的飞速发展&#xff0c;智能手表已经成为我们日常生活中不可或缺的智能设备。而在智能手表制造中&#xff0c;激光打标机扮演着至关重要的角色。本文将详细介绍激光打标机在智能手表制造中的应用&#xff0c;以及其带来的优势和影响。 ​ 一、激光打标机在智能手表制…

UE4 材质实现Glitch效果

材质实现Glitch效果 UE4 材质实现Glitch效果预览1预览2 UE4 材质实现Glitch效果 预览1 添加材质函数&#xff1a; MF_RandomNoise 添加材质&#xff1a; 预览2 添加材质函数MF_CustomPanner&#xff1a; 添加材质函数&#xff1a;MF_Glitch 材质添加&#xff1a; 下面用…

解决Eslint和Prettier关于三元运算符的冲突问题

三元运算符Prettier的格式化 三元运算符Eslint的格式要求 解决办法 // eslint加入配置&#xff0c;屏蔽标红报错indent: [error, 2, { ignoredNodes: [ConditionalExpression] }]效果

MS5228/5248/5268:2.7V 到 5.5V、 12/14/16Bit、内置基准、八通道数模转换器

MS5228/MS5248/MS5268 是一款 12/14/16bit 八通道输出的电压型 DAC &#xff0c;内部集成上电复位电路、可选内部基准、接口采用四线串口模式&#xff0c; 最高工作频率可以到 40MHz &#xff0c;可以兼容 SPI 、 QSPI 、 DSP 接口和 Microwire 串口。输出接到一个 …