《每天一个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.mzph.cn/news/208660.shtml

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

相关文章

软件工程复习

一、题型 单项选择题 20分 填空题 10分 判断题 10分 简答题 18分 应用题 12分 综合题 30分 软件程序数据文档 软件是无形的、不可见的逻辑实体 20世纪60年代末爆发软件危机 软件危机是指软件在开发与维护过程中遇到的一系列严重的问题 …

理解 GET、POST、PATCH 和 DELETE 请求的参数传递方式

理解 GET、POST、PATCH 和 DELETE 请求的参数传递方式 本文将向您介绍在使用 GET、POST、PATCH 和 DELETE 请求时如何传递参数。通过详细解释每种请求的参数传递方式和示例代码&#xff0c;您将了解如何正确地将数据发送到服务器并与之交互。 GET 请求的参数传递方式 在 GET…

CentOS 7.9安装宝塔面板,安装gitlab服务器

docker安装方式比较慢&#xff0c;安装包1.3GB 安装后启动很慢 docker logs q18qgztxdvozdv_gitlab-ce-gitlab-1 docker ps docker exec -it q18qgztxdvozdv_gitlab-ce-gitlab-1 sh cd /etc/gitlab cat initial_root_password 软件商店安装方式&#xff0c;失败了2023.12…

clickhouse删除partition分区数据

clickhouse分布式表tencent_table_20231208_DIST&#xff0c;本地表tencent_table_20231208_local&#xff1b; 30台clickhouse存储服务器&#xff1b; 本地表&#xff1a;tencent_table_20231208_local CREATE TABLE tencent_sz.tencent_table_20231208_local (id Int64 DEFA…

hook其他调试技巧

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

机器学习--稀疏学习

前置知识&#xff1a; 通常学习一次模型的过程如下&#xff1a;我们普遍为了获取更好的模型效果&#xff0c;直接对原始数据学习&#xff0c;会造成过拟合、需要特征提取&#xff1b; 而若特征提取完后依旧有很多特征&#xff0c;还是会容易过拟合。这时候就需要特征降维和特…

[leetcode 前缀和]

525. 连续数组 M :::details 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2: 输入: nums [0,1,0] 输出: …

笙默考试管理系统-MyExamTest----codemirror(48)

笙默考试管理系统-MyExamTest----codemirror&#xff08;48&#xff09; 目录 笙默考试管理系统-MyExamTest----codemirror&#xff08;48&#xff09; 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管…

C/C++端口复用SO_REUSEADDR(setsockopt参数),test ok

端口复用最常用的用途应该是防止服务器重启时之前绑定的端口还未释放或者程序突然退出而系统没有释放端口。这种情况下如果设定了端口复用&#xff0c;则新启动的服务器进程可以直接绑定端口。如果没有设定端口复用&#xff0c;绑定会失败&#xff0c;提示ADDR已经在使用中——…

前端学习--React(5)

一、useReducer 管理相对复杂的状态数据 定义一个reducer函数&#xff0c;根据action值的不同返回不同的状态 在组件中调用useReducer并传入reducer函数和状态的初始值 事件发生时&#xff0c;通过dispatch函数分派一个对象&#xff0c;即通知reducer具体返回哪个状态对应的操…

STM32 寄存器配置笔记——USART DMA发送

一、DMA介绍 直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传 输。无须 CPU 干预&#xff0c;数据可以通过 DMA 快速地移动&#xff0c;这就节省了 CPU 的资源来做其他操作。当产品对于时序要求较严格时&#xff0c;外设使用DMA的方式能够减…

深入了解Java 8日期时间新玩法:DateTimeFormatter与ZoneOffset的使用

推荐语 在这篇文章中&#xff0c;我们将深入探讨Java中的DateTimeFormatter和ZoneOffset类的功能和使用方法。这些类是在Java 8中引入的新的日期时间API的一部分&#xff0c;它们为我们提供了更灵活、更易用的日期和时间处理能力。尽管这些类在Java 8中已经出现&#xff0c;但…

ELK(六)—Filebeat安装部署

目录 一、介绍1.1特点1.2使用原因1.3结构图1.4工作流程 二、安装部署2.1下载2.2启动2.3监控日志文件2.4自定义字段 三、连接Elasticsearch四、工作原理 一、介绍 Filebeat是一个轻量级的日志和文件数据收集器&#xff0c;属于Elastic Stack&#xff08;ELK Stack&#xff09;中…

近期Chrome浏览器 不知哪个版本升级后原先http强制跳转到https,导致服务端302强制跳转到http也没反应

关于Chrome更新http强制跳转到https解决方法 近期Chrome浏览器 不知哪个版本升级后原先http强制跳转到https&#xff0c;导致服务端302强制跳转到http也没反应一、F12检查加载的Response Headers中有没有Non-Authoritative-Reason二、找了资料后得到解决方案&#xff1a;三、找…

云原生数据库是什么?它的作用是啥?

目前来说&#xff0c;各厂商的云原生数据库在演进路线上分成了两个略有不同的路径来解决不同的问题。 一种是各大公有云厂商选择的&#xff0c;优先保证上云兼容性的路线&#xff0c;就是基于存算分离架构对传统数据库进行改造的路线&#xff1a;通过把大量的日志操作放到后台…

插入排序——直接插入排序和希尔排序(C语言实现)

文章目录 前言直接插入排序基本思想特性总结代码实现 希尔排序算法思想特性总结代码实现 前言 本博客插入排序动图和希尔排序视频参考大佬java技术爱好者&#xff0c;如有侵权&#xff0c;请联系删除。 直接插入排序 基本思想 直接插入排序是一种简单的插入排序法&#xff…

图空图床图片外链系统源码-支持自定义权限策略-图片大小格式

含视频搭建教程。 大致功能&#xff1a; 支持本地等多种第三方云储存 AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio多种数据库驱动支持&#xff0c;MySQL 5.7、PostgreSQL 9.6、SQLite 3.8.8、SQL Server 2017支持配置使用多种缓存驱动&#xff…

车联网软件定义汽车安全攻击示例

目录 导言 名词解释 TBox QNX介绍 ADB 威胁分析

Flameshot的安装、配置及使用

概要&#xff1a;本篇主要介绍在Ubuntu22.04环境下&#xff0c;截图软件Flameshot的安装、配置及使用。 一、安装 推荐命令行安装 sudo apt install flameshot 二、修改gdm3配置文件 这一步是为了解决截图时没有光标的问题&#xff0c;解决方法我是从这里学到的解决flam…

【hugging face】bitsandbytes中8 bit量化的理解

8 位量化使数十亿参数规模的模型能够适应更小的硬件&#xff0c;而不会降低性能。 8 位量化的工作原理如下&#xff1a; 1.从输入隐藏状态中按列提取较大值&#xff08;离群值&#xff09;。 2.对 FP16 中的离群值和 int8 中的非离群值执行矩阵乘法。 3.改变非异常值结果以将值…