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

这里写目录标题

  • 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:00C:\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 服务器ipUser 连接用户名IdentityFile ~/.ssh/id_rsa[密钥位置]Port 22

示例:

Host alHostName 47.95.178.146User rootIdentityFile ~/.ssh/alPort 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.146Welcome 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 alWelcome 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.mzph.cn/news/845872.shtml

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

相关文章

每日一题《leetcode--LCR 022.环形链表||》

https://leetcode.cn/problems/c32eOV/ 我们使用两个指针,fast 与 slow。它们起始都位于链表的头部。随后slow 指针每次向后移动一个位置,而fast 指针向后移动两个位置。如果链表中存在环,则fast 指针最终将再次与slow 指针在环中相遇。 stru…

AR和AP重分类(Regroup)[FAGLF101/OBBU/OBBV]

一、为什么AR和AP科目需要重分类 1.1 执行操作的前提(重要) 存在AR的当月总余额在贷方(客户贷项凭证、预收账款等)或AP的当月总余额在借方(供应商贷项凭证、预收账款等),这种情况下无法真实的反映出资产和负债情况&…

阿里云语音合成TTS直播助手软件开发

阿里云的TTS比较便宜,效果比不了开源克隆的那种,比纯机器人效果好一点点 阿里云sambert https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13 Sambert系列模型 1万字1元 ,每主账号每模型每月3万字免费 创建API-KEY htt…

Linux——多线程(二)

在上一篇博客中我们已经介绍到了线程控制以及对应的函数调用接口&#xff0c;接下来要讲的是真正的多线程&#xff0c;线程安全、线程互斥、同步以及锁。 一、多线程 简单写个多线程的创建、等待的代码 #include<iostream> #include<pthread.h> #include<un…

【C++】list的使用(下)

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 前言&#x1f525;操作list对象的接口函数&#xff08;opeartions&#xff09;spliceremoveremove_ifuniquemergesortreverse 结语 前言 本篇博客主要内容&#xff1a;STL…

MySQL 自定义函数(实验报告)

一、实验名称&#xff1a; 自定义函数 二、实验日期&#xff1a; 2024年 6 月 1 日 三、实验目的&#xff1a; 掌握MySQL自定义函数的创建及调用&#xff1b; 四、实验用的仪器和材料&#xff1a; 硬件&#xff1a;PC电脑一台&#xff1b; 配置&#xff1a;内存&#…

如何区分解析亚马逊网站产品搜索结果页HTM代码中广告位( Sponsored)和自然位的产品ASIN及排名

在开发亚马逊产品广告排名插件的时候需要通过页面HTML代码分别找出属于广告位和自然搜索结果的产品ASIN及排名&#xff0c;所以需要找到区分广告位和自然搜索结果的HTML代码属性&#xff1a; 所有搜索结果页的产品不管是广告位还是自然位&#xff0c;都包括在 标签里&#xff…

RTPS协议之Behavior Module

目录 交互要求基本要求RTPS Writer 行为RTPS Reader行为 RTPS协议的实现与Reader匹配的Writer的行为涉及到的类型RTPS Writer实现RTPS WriterRTPS StatelessWriterRTPS ReaderLocatorRTPS StatefulWriterRTPS ReaderProxyRTPS ChangeForReader RTPS StatelessWriter BehaviorBe…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的信任根服务

安全之安全(security)博客目录导读 目录 一、信任根服务 1、非易失性存储 2、根看门狗 3、随机数生成器 4、加密服务 5、硬件强制安全性 本节定义了系统架构必须支持的一般安全属性和能力&#xff0c;以确保RME安全性。 本章扩展了可能属于系统认证配置文件的一部分的其…

30 分钟内掌握 Mainnet、Testnet 和 Devnet。Devnet是什么??

在区块链技术领域&#xff0c;Mainnet、Testnet 和 Devnet 等术语经常被使用&#xff0c;但也经常被误解。 这三种环境在区块链应用的开发和部署中起着至关重要的作用&#xff0c;但它们的区别和目的却常常被混淆。 让我们踏上探索之旅&#xff0c;揭开 Mainnet、Testnet 和 De…

Simulink中使用ROS1自定义消息

Simulink中使用ROS1自定义消息 简介前提条件操作流程问题一问题二问题三 吐槽 简介 最近在做的项目里需要使用Simulink与ROS联合仿真&#xff0c;这里就遇到了一个问题&#xff0c;Simulink无法直接使用ROS中的自定义消息&#xff0c;需要在MATLAB中生成一下&#xff0c;再引入…

GiantPandaCV | FasterTransformer Decoding 源码分析(六)-CrossAttention介绍

本文来源公众号“GiantPandaCV”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;FasterTransformer Decoding 源码分析(六)-CrossAttention介绍 GiantPandaCV | FasterTransformer Decoding 源码分析(一)-整体框架介绍-CSDN博客 …

MyBatis系统学习篇 - 分页插件

MyBatis是一个非常流行的Java持久层框架&#xff0c;它简化了数据库操作的代码。分页是数据库查询中常见的需求&#xff0c;MyBatis本身并不直接支持分页功能&#xff0c;但可以通过插件来实现&#xff0c;从而帮助我们在查询数据库的时候更加方便快捷 引入依赖 <dependen…

移动端路由切换解决方案 —— 虚拟任务栈让你的 H5 像APP一样丝滑

目录 01: 前言 02: 通用组件&#xff1a;trigger-menu 和 trigger-menu-item 构建方案分析 03: 通用组件&#xff1a;构建 trigger-menu 和 trigger-menu-item 04: 前台业务下 H5 的应用场景 05: 通用组件&#xff1a;transition-router-view 构建方案分析 与 虚拟任务栈…

Java实战:将学生列表写入文件

本实战项目旨在演示如何使用Java语言将学生信息列表写入到一个文本文件中&#xff0c;并进行单元测试以确保代码的正确性。 创建静态方法 定义一个名为writeStudentsToFile的静态方法&#xff0c;该方法接收两个参数&#xff1a;一个Student对象的列表和一个文件路径。使用File…

Python疑难杂症--考试复习

1.排序输出字典中数据 dic1 {Tom:21,Bob:18,Jack:23,Ana:20} dic2 {李雷:21,韩梅梅:18,小明:23,小红:20} nint(input()) if n>len(dic1):nlen(dic1) print(sorted(dic1.keys())[:n]) print(sorted(dic2.items(),keylambda item:item[1])[:n]) 2.罗马数字转换 def F(s):d{…

SQL—DQL(数据查询语言)之小结

一、引言 在前面我们已经学习完了所有的关于DQL&#xff08;数据查询语言&#xff09;的基础语法块部分&#xff0c;现在对DQL语句所涉及的语法&#xff0c;以及需要注意的事项做一个简单的总结。 二、DQL语句 1、基础查询 注意&#xff1a; 基础查询的语法是&#xff1a;SELE…

FineBi导出Excel后台版实现

就是不通过浏览器,在后台运行的导出 参考文档在:仪表板查看接口- FineBI帮助文档 FineBI帮助文档 我这里是将这个帮助文档中导出的excel文件写到服务器某个地方后,对excel进行其他操作后再下载。由于原有接口耦合了HttpServletRequest req, HttpServletResponse res对象,…

海外短剧APP/H5 系统开发搭建

目前已经有多个客户用我们搭建的海外短剧系统&#xff0c;在使用中已经取得了较高的收益。目前一个客户打算做日本区域的海外短剧项目&#xff0c;需求已经理清楚了&#xff0c;系统正在搭建中

[MYSQL] 部门工资最高的员工

表&#xff1a; Employee ----------------------- | 列名 | 类型 | ----------------------- | id | int | | name | varchar | | salary | int | | departmentId | int | ----------------------- 在 SQL 中&#xff0c;id…