【Linux生成SSH秘钥实现远程连接】Linux生成SSH秘钥对与修改服务配置文件实现无密码远程连接

文章目录

    • 前言
    • 1. Linux 生成SSH秘钥对
    • 2. 修改SSH服务配置文件
    • 3. 客户端秘钥文件设置
    • 4. 本地SSH私钥连接测试
    • 5. Linux安装Cpolar工具
    • 6. 配置SSHTCP公网地址
    • 7. 远程SSH私钥连接测试
    • 8. 固定SSH公网地址
    • 9. 固定SSH地址测试

前言

在数字化江湖中,企业对各种技术的需求就像武林高手对绝世武功的追求一样,永无止境。远程办公已经成为了一股不可阻挡的趋势,无数公司纷纷加入这场云端盛宴。然而,在大家享受着云上办公带来的便捷与高效时,一个棘手的问题却悄然而至 —— 传统的密码登录方式简直就是漏洞百出!不仅容易被黑客攻破,还可能因为员工的疏忽而泄露重要信息,给企业的信息安全蒙上了厚厚的阴影。

面对既要保障工作效率又要确保数据安全的双重挑战,你是否感到束手无策?别担心,答案其实简单得让人惊讶 —— 采用私钥进行身份验证,并搭配一款强大的内网穿透工具 Cpolar。今天,就让我们一起探索如何用这些秘籍,让你的远程服务器管理既安全又酷炫,轻松应对远程办公的各种烦恼,助你在数字化浪潮中乘风破浪!

请添加图片描述

1. Linux 生成SSH秘钥对

本地ssh连接上Linux ,执行ssh-keygen -t rsa 命令生成秘钥对,执行命令后,一路回车即可,执行完成后,我们可以看到生成的秘钥的文件都放在/root/.ssh/这个文件夹下面(具体以自己的路径为准)

image-20241011160037118

生成后,我们执行:cd ~/.ssh 命令进入这个文件夹,然后列出目录,可以看到有两个文件,第一个是私钥 第二个.pub结尾是公钥

image-20241011160333154

然后我们把公钥.pub结尾的那个文件改个名称,执行下面命令,把id_rsa.pub改为authorized_keys

mv id_rsa.pub authorized_keys

修改后,我们再次查看列表,id_rsa.pub文件变成了authorized_keys,这样就修改成功了,接下来我们修改一下ssh配置文件

image-20241011160655433

2. 修改SSH服务配置文件

上面秘钥对生成设置好后,我们打开ssh 配置文件,输入命令:vim /etc/ssh/sshd_config,按i 键进入编辑,然后开启公钥验证,把密码验证改为no,表示关闭,然后记得保存

image-20241011135955512

然后重启一下ssh服务,下面我们开始在windows设置连接

systemctl restart sshd

3. 客户端秘钥文件设置

本例是使用windows来连接Linux,我们需要在windows设置一下Linux的私钥,首先回到Linux,在Linux中我们输入下面命令查看id_rsa私钥内容

cat ~/.ssh/id_rsa

执行命令后,我们可以看到这个id_rsa私钥文件的全部内容,把这些内容全部复制下来

image-20241011161742062

然后我们在windows任意文件夹下,这个文件夹路径自己要知道,比如我这边是放在E:/ssh/文件夹下面,具体以自己设置为准,然后创建一个名称为id_rsa的文件.不用指定后缀

image-20241011162019622

创建好后,我们用记事本或者文本工具打开,把我们在Linux上看到的那个秘钥文件的内容全部粘贴进去,然后保存

image-20241011162133240

接下来设置这个秘钥文件的权限,缩小权限的范围,选中右键点击属性,打开安全,点击高级

image-20241011162510712

首先点击禁用继承

image-20241011162609878

然后点击选择第一个选项

image-20241011162646411

然后我们把这些全部的权限一个个删除掉,全部删掉

image-20241011162801677

全部删除后我们点击添加一个用户权限

image-20241011162837155

然后点击选择主体,输入自己电脑用户名,再点击确定按钮

image-20241011163008874

然后会默认勾选两个权限,直接点击确定即可

image-20241011163138448

然后我们可以看到添加了一个用户权限,直接点击应用再点击确定即可

image-20241011163228044

再点击确定就全部设置完成了,下面我们就可以本地测试连接了

image-20241011163330329

4. 本地SSH私钥连接测试

首先我们本地输入ssh 用户名@局域网IP 测试,可以看到 密码的方式已经无法连接了

image-20241011163646940

现在我们加上指定秘钥文件路径再次连接,命令格式ssh 用户名@局域网IP -i 秘钥文件全路径,可以看到成功连接上了Linux.其中 -i E/ssh/id_rsa 这个参数就是指定我们上面在windows创建设置的秘钥文件全路径.本地测试就成功了,这样Linux ssh连接就设置只能秘钥登录,无法使用密码登录,极大的提高了安全性,下面我们在Linux安装cpolar,实现远程也可以连接访问

image-20241011163935910

5. Linux安装Cpolar工具

上面在本地成功设置了无密码使用私钥方式ssh 连接,并本地局域网测试成功,下面我们在Linux安装Cpolar内网穿透工具,通过Cpolar 转发本地端口创建公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
sudo curl https://get.cpolar.sh | sh
  • 安装完成后,可以通过如下方式来操作cpolar服务,首先执行加入系统服务设置开机启动,然后再启动服务
# 加入系统服务设置开机启动
sudo systemctl enable cpolar# 启动cpolar服务
sudo systemctl start cpolar# 重启cpolar服务
sudo systemctl restart cpolar# 查看cpolar服务状态
sudo systemctl status cpolar# 停止cpolar服务
sudo systemctl stop cpolar

Cpolar安装和成功启动服务后,内部或外部浏览器上通过局域网IP加9200端口即:【http://192.168.xxx.xxx:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可

image-20240220142041422

6. 配置SSHTCP公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:22 (ssh 默认端口)
  • 域名类型:临时随机TCP端口 (首次使用 选择随机地址测试)
  • 地区:选择China vip

点击创建 (注意点击一次即可!)

image-20241011165228961

然后打开左侧在线隧道列表,查看刚刚创建隧道后生成的远程 TCP连接地址,这个地址就是远程连接的地址,在其他设备上使用该地址进行远程连接,下面进行远程地址连接测试

image-20241011165252709

7. 远程SSH私钥连接测试

创建好公网地址后,我们打开cmd窗口 ,使用公网地址进行连接,输入命令格式:ssh 用户名@cpolar公网域名 -p 域名对应的端口 点击回车,我们可以看到,同样密码的方式已经无法连接了

image-20241011165927418

下面我们指定一下私钥文件全路径,可以看到成功连接上了Linux,不需要输入密码,同时也是公网连接,如果其他电脑要连接Linux,我们只要把这个私钥文件拷贝去其他电脑,在连接的时候指定这个私钥文件全路径,就可以在其他电脑进行远程连接Linux了,到这里初步设置就全部完成了!

image-20241011170204514

小结

为了更好地演示,我们在前述过程中使用了Cpolar生成的隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

我一般会使用固定TCP域名,原因是我希望将地址发送给同事或客户时,它是一个固定、易记的公网地址,这样更显正式,便于交流协作。

8. 固定SSH公网地址

上面步骤在cpolar中使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的TCP端口地址,该地址不会变化,设置后将无需每天重复修改地址。

登录Cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为远程联机地址保留一个固定的地址:

  • 地区:选择China vip
  • 描述:即备注,可自定义

点击保留

image-20241011170717240

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

image-20241011170751597

再次打开cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的TCP隧道,点击右侧的编辑

image-20241011170844227

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的TCP地址:填写官网保留成功的地址,

点击更新(只需要点击一次更新即可,不要重复点击)

image-20241011170912822

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了和我们在官网固定的TCP地址和端口一致。这样表示地址已经成功固定了,下面测试固定地址连接

image-20241011170937126

9. 固定SSH地址测试

固定地址设置好后,我们再次使用固定的tcp地址进行连接,同样也需要指定私钥文件全路径,可以看到,成功连接上了Linux ,固定地址测试连接就完成了,不用再担心地址端口会变化了.

image-20241011171425316

固定地址设置好后,我们再次使用固定的tcp地址进行连接,同样也需要指定私钥文件全路径,可以看到,成功连接上了Linux ,固定地址测试连接就完成了,不用再担心地址端口会变化了. 有了私钥认证和Cpolar这两大法宝的加持,你的信息系统安全性不仅直线飙升,还能让远程办公变得轻松愉快。希望这篇文章能帮你在这场数字化转型的大戏中走得更加稳健。如果你对这些技术有任何疑问或需要更多秘籍,请在评论区留言,我们保证第一时间为你答疑解惑!别忘了点赞、关注和分享哦,让我们一起成为远程工作的武林高手,笑傲云上江湖,让工作变得既高效又有趣!

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

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

相关文章

# linux 设置宽容模式

linux 设置宽容模式 在Linux系统中,通常没有直接称为“宽容模式”的设置选项,但你可以通过几种方式来模拟或调整系统行为,使其表现得更加“宽容”,特别是在处理错误、权限问题或其他潜在问题时。以下是一些常见的方法&#xff1a…

【C++】——lambda表达式

🌟 前言:​​C Lambda表达式,当函数开始"叛逆期"​​ 你是否有过这样的崩溃瞬间? 为了写个​​只用到一次​​的排序规则,被迫定义了一个类在std::for_each里塞函数指针,代码瞬间变成"古董级"写法看着层的循环…

深入解析B站androidApp接口:从bilibili.api.ticket.v1.Ticket/GetTicket到SendMsg的技术分析

前言 最近一段时间,我对B站的App接口进行了深入分析,特别是关注了认证机制和私信功能的实现。通过逆向工程和网络抓包,发现了B站移动端API的底层工作原理,包括设备标识生成机制、认证流程和消息传输协议。本文将分享这些研究成果…

从零开始学A2A一:A2A 协议概述与核心概念

A2A 协议概述与核心概念 学习目标 基础理解 掌握A2A协议的基本概念和背景理解协议的设计原则和核心思想了解协议在AI领域的重要性 技术掌握 熟悉A2A协议的核心功能组件掌握能力发现和任务管理机制理解多模态交互和安全通信原则 实践应用 能够设计基于A2A的智能体系统掌握协议…

2025.04.10-拼多多春招笔试第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 数字重排最大化问题 问题描述 LYA是一位专业的数字设计师。她手中有两个数字序列 s 1 s_1

苍穹外卖day04

Spring Task实现定时处理订单状态 作用:不需要输入提示信号,便可定时自动执行程序 使用步骤 1、启动类上加上注解(EnableScheduling)开启定时任务调度 2、专门创建一个包来管理执行定时任务的类,该类需要交给IOC容…

BFD:网络链路检测与联动配置全攻略

目录 BFD简介 BFD会话建立方式和检测机制 BFD会话建立过程 BFD工作流程 联动功能 BFD与OSPF联动配置需求 BFD与OSPF联动配置实现 BFD与VRRP联动配置需求 BFD与VRRP联动配置实现 单臂回声 BFD默认参数及调整方法 BFD简介 一种全网统一、检测迅速、监控网络中链…

【LLM】A2A 与 MCP:剖析 AI Agent 互联时代的两种关键协议

随着人工智能技术的飞速发展,AI Agent(智能体)正从理论走向实践,有望成为提升生产力的关键。然而,正如历史上任何新兴技术领域一样,标准的缺失导致了“筒仓效应”——不同来源、不同框架构建的 Agent 难以有…

免费下载 | 2025清华五道口:“十五五”金融规划研究白皮书

《2025清华五道口:“十五五”金融规划研究白皮书》的核心内容主要包括以下几个方面: 一、五年金融规划的重要功能与作用 凝聚共识:五年金融规划是国家金融发展的前瞻性谋划和战略性安排,通过广泛听取社会各界意见,凝…

滚轮控制目标臂长度调整相机距离

通过鼠标滚轮来控制摄像机目标臂长度 , 调整相机距离 看图就行,不多说,照着连就完事了

kernel32!GetQueuedCompletionStatus函数分析之返回值得有效性

第一部分://#define STATUS_SUCCESS 0x0返回值为0 } else { // // Set the completion status, capture the completion // information, deallocate the associated IRP, and // attempt to write the…

UE5 Chaos :渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?

官方文献:https://dev.epicgames.com/community/learning/tutorials/pv7x/unreal-engine-panel-cloth-editor 这背后的核心是一种常见的计算机图形学技术,通常称为代理绑定 (Proxy Binding) 或 表面变形传递 (Surface Deformation Transfer)。 关联机制…

老旧测试用例生成平台异步任务与用户通知优化

在现代 Web 开发中,异步任务处理和用户通知是两个重要的功能。由于老旧测试平台【测试用例生成平台,源码分享】进行智能化升级后,未采用异步任务处理,大模型推理时间较长,导致任务阻塞,无法处理其他任务&am…

Java使用ANTLR4对Lua脚本语法校验

文章目录 什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Grammar文件maven配置新建实体类Lua语法遍历器语法错误监听器单元测试 参考 什么是ANTLR? https://www.antlr.org/ ANTLR (ANother Tool for Language Recognition) is a…

观察者模式(行为模式)

观察者模式 观察者模式属于行为模式,个人理解:和发布订阅者魔模式是有区别的 细分有两种:推模式和拉模式两种,具体区别在于推模式会自带推送参数,拉模式是在接收通知后要自己获取更新参数 观察者模式(Obs…

内网渗透 --- 之杀软工具探测

目录 内网杀软探测与应对实战方案 一、总体思路 二、探测阶段——杀软工具与手法 2.1 进程与服务检测 2.2 注册表与文件系统检测 2.3 Nmap 与 NSE 脚本扫描 三、处理阶段——探测到杀软后的应对措施 3.1 分析评估 3.2 应对策略 四、判断与验证——注入 webshell 后如…

(2025亲测可用)Chatbox多端一键配置Claude/GPT/DeepSeek-网页端配置

1. 资源准备 API Key:此项配置填写在一步API官网创建API令牌,一键直达API令牌创建页面创建API令牌步骤请参考API Key的获取和使用API Host:此项配置填写https://yibuapi.com/v1查看支持的模型请参考这篇教程模型在线查询 2. ChatBox网页版配…

【Pandas】pandas DataFrame keys

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…

Redis存储“大数据对象”的常用策略及StackOverflowError错误解决方案

Hi,大家好,我是灰小猿! 在一些功能的开发中,我们一般会有一些场景需要将得到的数据先暂时的存储起来,以便后面的接口或业务使用,这种场景我们一般常用的场景就是将数据暂时存储在缓存中,之后再…

【Python】读取xyz坐标文件输出csv文件

Python读取xyz坐标文件输出csv文件 import sys import numpy as np import pandas as pd from tqdm import tqdm import cv2 import argparsedef read_xyz(file_path):with open(file_path, "r") as f: # 打开文件data f.readlines() # 读取文件datas []for …