生成ssh密钥,使用ssh连接linux系统

news2024/11/16 18:20:39

这里写目录标题

  • ssh密钥大概介绍
    • 1、密钥在哪里生成(客户端/服务器)?
    • 2、密钥生成是什么样子的?
  • ssh (生成密钥、密钥传输、配置连接、连接服务)过程
    • 1、生成密钥
      • 提示一:输入保存密钥的文件:Enter file in which to save the key
      • 提示二、输入密码短语:Enter passphrase (empty for no passphrase)
      • 1.3、生成密钥提示:Enter same passphrase again
      • 1.4、生成密钥提示:Passphrases do not match. Try again
    • 2、密钥传输
      • 方法一:使用 SSH 拷贝公钥到远程服务器(适用于Mac、Linux电脑)
        • 1.使用以下命令将本地公钥复制到远程服务器:
        • 2.如果你的服务器端口不是默认的 22 端口,可以使用 -p 参数指定端口号:
      • 方法二:手动上传公钥到服务器(适用于Windows、Mac及linux电脑)
        • 1.使用 scp 命令传输密钥
    • 3、配置连接
      • 检查一:linux服务端:是否开启密钥连接
        • 情况1:【空白】
        • 情况2:PubkeyAuthentication no
        • 情况3:#PubkeyAuthentication yes
      • 检查二:linux服务端:公钥文件位置是否正确
        • 情况1:【空白】
        • 情况2:AuthorizedKeysFile
        • 情况3:#AuthorizedKeysFile .ssh/authorized_keys
        • 情况4:AuthorizedKeysFile .ssh/abcdef/authorized_keys
      • (可选)配置一:PC服务端:快速连接
    • 3、连接服务
      • 方法一:使用ssh -i 密钥连接
      • 方法一:使用ssh config快速连接

ssh密钥大概介绍

1、密钥在哪里生成(客户端/服务器)?

客户端/服务器都可以生成,但是要考虑传输方便和安全问题
根据自己的使用情况密钥传输,怎么方便怎么来,

  • 一对一:一台PC连接一台Linux服务器,我喜欢在PC上生成,在传密钥给Linux。你也可以在Linux生成然后传回来
  • 一对多:如果一台PC访问多台Linux服务器,就在PC上生成密钥对,这样就可以使用同一密钥对访问所有服务器。
  • 多对一:如果一台Linux服务器,多个PC端需要连接这台服务器,那么你可以在这台Linux服务器上生成密钥对
  • 多对多:拆分成一对多 噜噜噜~~

2、密钥生成是什么样子的?

ssh (生成密钥、密钥传输、配置连接、连接服务)过程

1、生成密钥

这里我用测试的Linux服务器来演示,每次生成会产生一个公钥和一个私钥,两个密钥是一对相互关联组成的

公钥(public key):公钥用于加密数据或验证签名,一般存储在远程服务器上进行身份验证。

私钥(private key):私钥用于解密数据或生成数字签名,一般存储在PC端进行连接,并且必须严格保密。

ssh-keygen 命令有多个可选选项,其中一些常用选项包括:

  • -t:指定要生成的密钥类型,如 rsa、dsa、ecdsa、ed25519 等。
  • -b:指定生成密钥的位数,通常用于RSA密钥,如 -b 2048。
  • -C:在生成密钥时添加注释,可用于识别密钥的用途或所有者。
  • -f:指定生成密钥的文件路径和名称。
  • -N:设置用于保护私钥的密码,可以为空。
  • -q:静默模式,减少输出信息。
  • -y:从私钥中提取公钥并打印到标准输出。
  • -h:显示命令的使用帮助信息。

输入下面命令就会生成(公钥和私钥)

ssh-keygen

最终生成完是这样的👇

C:\Users\17569\Desktop\ssh>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\17569/.ssh/id_rsa): 47.95.178.146
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in 47.95.178.146.
Your public key has been saved in 47.95.178.146.pub.
The key fingerprint is:
SHA256:ST7ke0dkXzI5UvM1KKqEABT39KTRs239D70eyTlYWmg 17569@xk-Lenovo
The key's randomart image is:
+---[RSA 3072]----+
|.+o. o..      +..|
|  ..o =o   . o +o|
|    .o..* o = = o|
|     . B = + o.= |
|      . S   oEoo |
|       . o ..o*.o|
|        . . .oo*.|
|         . .   oo|
|              .. |
+----[SHA256]-----+

C:\Users\17569\Desktop\ssh>

可能看到一些提示,如果没有就跳过


提示一:输入保存密钥的文件:Enter file in which to save the key

让我们输入生成密钥的名称,我这里输入我的服务器IP方便记住

Enter file in which to save the key (C:\Users\17569/.ssh/id_rsa): 47.95.178.146
翻译:
输入保存密钥的文件(C:\Users\17569/.ssh/id_rsa): 47.95.178.146

提示二、输入密码短语:Enter passphrase (empty for no passphrase)

让我们输入密码短语以增加安全性,也可以直接按回车键跳过密码短语,输入密码短语是不显示字符的哦

不建议输入,如果输入密码短语,每次使用密钥连接都需要在输入密码短语确认
不建议输入,如果输入密码短语,每次使用密钥连接都需要在输入密码短语确认
不建议输入,如果输入密码短语,每次使用密钥连接都需要在输入密码短语确认

Enter passphrase (empty for no passphrase):
翻译:
输入密码短语(空表示无密码短语):

1.3、生成密钥提示:Enter same passphrase again

输入两次,确保密码短语是正确的,在操作中输入不一致就提示:密码不匹配。再试一次。

Enter same passphrase again:
翻译:
再次输入相同的密码:

1.4、生成密钥提示:Passphrases do not match. Try again

输入两次密码短语是错误的,注意大小写和数字键盘是否开启

Passphrases do not match.  Try again.
翻译:
密码不匹配。再试一次。

2、密钥传输

生成后在执行的当前目录下会生成两个文件
默认路径如下:

  • windows电脑对应的路径为:C:\Users\你的用户名.ssh
  • MAC/linux对应的路径为:~/.ssh

生成的密钥对有两个文件:id_rsa(私钥文件)和 id_rsa.pub(公钥文件)

私钥:47.95.178.146
公钥:47.95.178.146.pub

公钥(public key):公钥用于加密数据或验证签名,一般存储在远程服务器上进行身份验证。

私钥(private key):私钥用于解密数据或生成数字签名,一般存储在PC端进行连接,并且必须严格保密。

在这里插入图片描述

方法一:使用 SSH 拷贝公钥到远程服务器(适用于Mac、Linux电脑)

1.使用以下命令将本地公钥复制到远程服务器:

然后会要求你输入密码,就会将公钥自动添加到远程服务器的 ~/.ssh/authorized_keys 文件中

ssh-copy-id 连接用户名@服务器ip

2.如果你的服务器端口不是默认的 22 端口,可以使用 -p 参数指定端口号:
ssh-copy-id -p 28256 连接用户名@服务器ip

方法二:手动上传公钥到服务器(适用于Windows、Mac及linux电脑)

1.使用 scp 命令传输密钥

这样也可以把 复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

scp 公钥文件名.pub 连接用户名@服务器ip:~/.ssh/authorized_keys

示例:

scp 47.95.178.146.pub root@47.95.178.146:~/.ssh/authorized_keys

成功如下👇

C:\Users\17569\Desktop\ssh>scp 47.95.178.146.pub root@47.95.178.146:~/.ssh/authorized_keys
root@47.95.178.146's password: [此处输入密码,密码已隐藏]
47.95.178.146.pub                                                     100%  570     9.3KB/s   00:00

C:\Users\17569\Desktop\ssh>


3、配置连接

检查一:linux服务端:是否开启密钥连接

使用下面命令检查是否开启密钥连接,如果没有或者前面有个#都不行

cat  /etc/ssh/sshd_config | grep PubkeyAuthentication
情况1:【空白】
使用vim写入
情况2:PubkeyAuthentication no
使用 vim 改成 yes
情况3:#PubkeyAuthentication yes
使用 vim 去除 “#” 号

正确情况如下👇

[root@iZ2ze56a8gwg4w4scwap4qZ ~]# cat  /etc/ssh/sshd_config | grep PubkeyAuthentication
PubkeyAuthentication yes

[root@iZ2ze56a8gwg4w4scwap4qZ ~]#

检查二:linux服务端:公钥文件位置是否正确

使用下面命令检查是否开启密钥连接

cat  /etc/ssh/sshd_config | grep AuthorizedKeysFile
情况1:【空白】
使用vim写入
情况2:AuthorizedKeysFile
使用 vim 添加路径 .ssh/authorized_keys
情况3:#AuthorizedKeysFile .ssh/authorized_keys
使用 vim 去除 “#” 号
情况4:AuthorizedKeysFile .ssh/abcdef/authorized_keys
使用 vim 修改文件里面的路径 或者 把密钥文件移动位置

正确情况如下👇

[root@iZ2ze56a8gwg4w4scwap4qZ ~]# cat  /etc/ssh/sshd_config | grep AuthorizedKeysFile
AuthorizedKeysFile .ssh/authorized_keys

[root@iZ2ze56a8gwg4w4scwap4qZ ~]#

(可选)配置一:PC服务端:快速连接

打开目录:C:\Users\你的用户名.ssh
创建一个文件:config,下面是内容👇

Host 连接名称
    HostName 服务器ip
    User 连接用户名
    IdentityFile ~/.ssh/id_rsa[密钥位置]
    Port 22

示例:

Host al
    HostName 47.95.178.146
    User root
    IdentityFile ~/.ssh/al
    Port 22

3、连接服务

方法一:使用ssh -i 密钥连接

ssh -i 密钥文件位置 连接用户名@服务器ip

示例:

ssh -i id_rsa root@47.95.178.146

连接示例:

C:\Users\17569\Desktop\ssh>ssh -i 47.95.178.146 root@47.95.178.146

Welcome to XiaoKang's world!
Last login: Fri May 31 23:30:10 2024 from 116.249.141.191
[root@iZ2ze56a8gwg4w4scwap4qZ ~]# 

方法一:使用ssh config快速连接

使用在 “config” 文件中配置的连接名称直接连接

ssh 连接名称

示例:

ssh al

连接示例:

C:\Users\17569\Desktop\ssh>ssh al

Welcome to XiaoKang's world!
Last login: Fri May 31 23:54:52 2024 from 116.249.141.191
[root@iZ2ze56a8gwg4w4scwap4qZ ~]#

参考原文链接:https://blog.csdn.net/qq_41308872/article/details/138306315

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

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

相关文章

Nginx实战:nginx支持带下划线的header

nginx对header 的名字字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,后端服务就获取不到该请求头。 为了支持header带下划线的参数,可以在http内或者server内设置如下参数…

ip地址告诉别人安全吗?ip地址告诉别人会有什么风险

IP地址告诉别人安全吗?在数字化时代,IP地址作为网络连接的关键标识符,承载着重要的安全意义。然而,很多人可能并不清楚,轻易地将自己的IP地址告诉他人可能带来一系列安全风险。那么,IP地址告诉别人会有什么…

7-11 验证宏(verify)---PTA实验C++

一、题目描述 无需惊慌,C缔造者Bjarne Stroustrup这句话说的CPP是C PreProcessor,即“C代码预处理器”。CPP根据#include #define #if #pragma等指令对文件进行处理。这种处理发生在编译之前,所以CPP叫“预处理器”。CPP完全是文本层面的处理…

少样本学习与零样本学习:理解与应用

少样本学习与零样本学习:理解与应用 在现代机器学习领域中,少样本学习(Few-Shot Learning)和零样本学习(Zero-Shot Learning)正变得越来越重要。这些技术能够在数据稀缺的情况下有效地进行学习和推理&…

禁止Windows Defender任务计划程序

开始键->搜索“任务计划程序”->“任务计划程序库”->“Microsoft”->"Windows"->"Windows Defender"->右边四项

Prometheus + Grafana + Alertmanager 系统监控

PrometheusGrafana 系统监控 1. 简介1.1 Prometheus 普罗 米修斯1.2 Grafana 2. 快速试用2.1 Prometheus 普罗 米修斯2.2 Prometheus 配置文件2.3 Grafana 2. 使用 Docker-Compose脚本部署监控服务3. Grafana 配置3.1 配置数据源 Prometheus3.2 使用模板ID 配置监控模板3.3 使用…

【SpringBoot】怎么在一个大的SpringBoot项目中创建多个小的SpringBoot项目,从而形成子父依赖

父子项目工程创建 步骤 先创建父项目 具体操作步骤请看本文章:使用maven工程创建spring boot项目 创建子项目 file- project structure module–new module 剩下步骤请看创建父工程时的操作使用maven工程创建spring boot项目 应用 确认即可 之后创建启动类…

Kafka篇:Kafka搭建、使用、及Flink整合Kafka文档

一、Kafka搭建 1、上传并解压改名 tar -xvf kafka_2.11-1.0.0.tgz mv kafka_2.11-1.0.0 kafka-1.0.0 2、配置环境变量 vim /etc/profile export KAFKA_HOME/usr/local/soft/kafka-1.0.0 export PATH$PATH:$KAFKA_HOME/bin source /etc/profile (使环境变量生效…

SPHINX的输出文档格式

SPHINX的输出文档格式 SPHINX的输出文档格式更多信息 SPHINX的输出文档格式 用rst编写,然后用sphinx-build进行编译,还是效果相当不错地,只要掌握了格式,可以一次编译,多种格式输出,主要是用的可能是html和…

Java对象的比较——equals方法,Comparable接口,Comparator接口

Java对象的比较——equals方法,Comparable接口,Comparator接口 1. equals方法2. Comparable接口3. Comparator接口 1. equals方法 在判断两个整数是否相同时,我们可以使用以下方式: System.out.println(1 2); System.out.printl…

多普云DPGo摄影测量航线规划软件

1.航线代规划。支持GSR航线(大疆精灵4RTKSDK遥控器)、DJI Pilot航线(大疆精灵4RTK、M300)、DJI Pilot2航线(大疆精灵4RTK、M300、Mavic3E)。 2.DPGO三维模型满足毫米级精度要求:已知被摄范围&am…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统(二) 资源…

vscode编辑器创建分支注意事项?!

最近在公司开发项目时,不小心将自己分支的东西提交到公司的master的分支,大家看看是什么情况? 先上图: 从图上看,我这边用了GITLENS这个插件,在创建分支时,有个create branch from,有…

如何选择软件开发服务商

在当今数字化快速发展的时代,软件已经成为企业运营不可或缺的一部分。然而,对于许多非技术背景的企业来说,如何选择一个合适的软件开发服务商却是一个不小的挑战。本文将从需求分析、服务商评估、合同条款以及后期维护等方面,详细…

【GD32F303红枫派使用手册】第五节 FMC-片内Flash擦写读实验

5.1 实验内容 通过本实验主要学习以下内容: FMC控制器原理; FMC擦写读操作; 5.2 实验原理 5.2.1 FMC控制器原理 FMC即Flash控制器,其提供了片上Flash操作所需要的所有功能,在GD32F303系列MCU中,Flash…

环卫车北斗GPS视频监控定位解决方案的应用与优势

一、引言 随着城市化进程的加快,环卫车作为城市环境卫生的重要保障力量,其运行效率与安全性直接关系到城市形象与居民生活品质。然而,传统的环卫车管理模式往往存在信息不对称、调度不合理、行驶不规范等问题,导致城市道路污染和…

Java中的软引用,你了解吗?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

打工人福音,办公神器软件

今天分享2个免VIP的办公神器app,建议所有手机安装,第一个布丁扫描http://www.budingscan.com ,无广告不收费,这是VIVO 推出的一款完全免费的扫描APP,支持文档&证件扫描、OCR文字&表格识别提取、…

解决Windows 10通过SSH连接Ubuntu 20.04时的“Permission Denied”错误

在使用SSH连接远程服务器时,我们经常可能遇到各种连接错误,其中“Permission denied, please try again”是较为常见的一种。本文将分享一次实际案例的解决过程,帮助你理解如何排查并解决这类问题。 问题描述 在尝试从Windows 10系统通过SS…

js:flex弹性布局

目录 代码&#xff1a; 1、 flex-direction 2、flex-wrap 3、justify-content 4、align-items 5、align-content 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewp…