Linux SSH私钥认证结合cpolar内网穿透安全高效远程登录指南

news2024/11/24 7:39:01

文章目录

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

前言

开发人员在工作中经常需要远程访问服务器和数据中心,然而,传统的基于密码的SSH远程登录方式,尽管操作简便,却面临着密码泄露、暴力破解等多重安全隐患,严重威胁着企业的信息安全。

为了应对这些挑战,采用私钥进行身份验证的SSH登录方式应运而生。Linux SSH服务作为一种安全、灵活的网络协议,通过加密技术保障用户远程登录的安全。与密码登录相比,私钥认证方式利用加密算法生成的密钥对进行身份验证,仅持有私钥的用户才能成功登录,从而极大降低了密码泄露的风险。

但是,当SSH服务部署在内网环境中时,如何突破内网限制,实现远程访问成为了一个亟待解决的问题。此时,cpolar内网穿透工具凭借其高效、易用的特性,成为了连接内网与外网的桥梁。cpolar能够将内网服务器的端口映射到公网上,使得我们可以通过公网地址轻松访问内网服务。

本文将详细介绍如何将Linux SSH服务与cpolar相结合,使用私钥进行远程登录的配置流程。从cpolar的安装与配置,到SSH私钥的生成与设置,再到最终的远程连接测试,我们将为您提供全方位的指导。通过本文的学习,您将能够掌握一种更为安全、稳定的远程连接方式,为您的企业信息安全保驾护航。

请添加图片描述

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端口地址,该地址不会变化,设置后将无需每天重复修改地址。

配置固定tcp端口地址需要将Cpolar升级到专业版套餐或以上。

登录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

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

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

相关文章

vscode摸鱼学习插件开发

不知道大家在摸鱼的时候,会不会想要学习? 或者有没有考公人,下班要学习的? 上班时间摸鱼,下班时间不够学习? 为此,我决定开发一个vscode插件,来刷粉笔题 粉笔插件名称:…

深入浅出WebSocket(实践聊天室demo)

文章目录 什么是WebSocket?WebSocket连接过程WebSocket与Http的区别重连机制完整代码使用方法心跳机制实现聊天室demo(基于Socket.io)参考文章、视频小广告~什么是WebSocket? WebSocket 是一种在单个TCP连接上进行全双工通信的协议(计算机网络应用层的协议) 在 WebSocket A…

[ Linux 命令基础 7 ] Linux 命令详解-磁盘管理相关命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

ElasticSearch 添加IK分词器

ElasticSearch 添加IK分词器 前言一、IK分词器的算法二、Ik分词器的下载安装(Winows 版本)三、Ik分词器的下载安装(Linux 版本)四、验证测试(postman工具)测试 ik_smart 分词算法测试 ik_max_word 分词算法…

aws(学习笔记第十一课) 使用AWS的EFS,以及AWS Storage Gateway

aws(学习笔记第十一课) 使用AWS的EFS和AWSStorage Gateway 学习内容: 使用AWS的EFS使用AWS Storage Gateway 1. 使用AWS的EFS 什么是EFS EFS是 Elastic File System的缩写。前面练习的实例存储和EBS都是同时只能一个EC2实例进行挂载,不能实现多个EC2实…

Diffusion Policy——斯坦福刷盘机器人UMI所用的扩散策略(含Diff-Control、ControlNet详解)

前言 本文一开始是属于此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的第三部分,考虑后Diffusion Policy的重要性很高,加之后续还有一系列基于其的改进工作 故独立成本文,且把原属于另一…

计算机毕业设计 | SpringBoot慈善公益平台 爱心互助活动发布管理系统(附源码)

1,项目介绍 爱慈善公益平台(love-charity)是一个基于 SpringBoot 开发的标准 Java Web 项目。整体页面非常的简约大气,项目的完整度较高,是一个偏向公益论坛的系统。非常适合刚刚接触学习 SpringBoot 的技术小白学习&…

【深入浅出】之Linux进程(二)

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

bert-base-chinese模型使用教程

向量编码和向量相似度展示 import torch from transformers import BertTokenizer, BertModel import numpy as npmodel_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese"sentences [春眠不觉晓, 大梦谁先觉, 浓睡…

Qt/C++ 海康SDK开发示例Demo

*** 工业相机在机器视觉中起到关键作用,本文基于海康 SDK 详细解读了设备连接与控制的各个步骤。内容涵盖设备枚举、句柄创建、图像采集回调以及设备异常处理,帮助开发者快速理解如何通过代码控制相机,实时采集并处理图像数据。*** 1. 搜索并…

RabbitMQ的应用

七种工作模式介绍 1.Simple(简单模式) P:生产者,也就是要发送信息的程序 C:消费者,消息的接收者 Queue:消息队列。图中黄色背景部分,类似一个邮箱,可以缓存发送信息;生产者向其中…

K8S网络插件故障处理

1网络插件故障 1此故障问题处理方法 查询ip是否正常是否是主节点IP地址如果不是需要更改 更改方式 1 修改calico.yaml文件的相应参数 # Cluster type to identify the deployment type - name: IP_AUTODETECTION_METHOD #增加内容value: "interfaceens*" 或者 value…

【论文速看】DL最新进展20241109-图像超分、物理信息神经网络、扩散模型

目录 【图像超分】【物理信息神经网络】【扩散模型】 【图像超分】 [2024 红外图像超分] Infrared Image Super-Resolution via Lightweight Information Split Network 论文链接:https://arxiv.org/pdf/2405.10561v2 代码链接:无 单图像超分辨率&…

Python学习从0到1 day26 第三阶段 Spark ① 数据输入

要学会 剥落旧痂 然后 循此新生 —— 24.11.8 一、Spark是什么 定义: Apache Spark 是用于大规模数据处理的统一分析引擎 简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据…

[Python学习日记-63] 继承与派生

[Python学习日记-63] 继承与派生 简介 继承 派生 简介 上一篇文章我们学习了类如何使用,以及相关特性,也做了相关的练习,在练习当中发现类与类之间有时也会存在重复代码,其实在类中我们还有一个继承和派生的概念没有说&#xf…

基于 Encoder-only 架构的大语言模型

基于 Encoder-only 架构的大语言模型 Encoder-only 架构 Encoder-only 架构凭借着其独特的双向编码模型在自然语言处理任务中表现出色,尤其是在各类需要深入理解输入文本的任务中。 核心特点:双向编码模型,能够捕捉全面的上下文信息。 En…

Python学习------第四天

Python的判断语句 一、布尔类型和比较运算符 二、 if语句的基本格式 if语句注意空格缩进!!! if else python判断语句的嵌套用法:

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目,使用 uniapp 的 uni.getLocation 发现H5端定位不准确,比如余杭区会定位到临平区,根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本,是直接使用高德地图的api获取定位。 1.首…

测试网空投进行中 — 全面了解 DePIN 赛道潜力项目 ICN Protocol 及其不可错过的早期红利

随着云计算技术的飞速发展,越来越多的企业和个人对云服务的需求变得多样化且复杂化。然而,传统的中心化云服务平台(如AWS、微软Azure等)往往存在着高成本、数据隐私保护不足以及灵活性差等问题。 为了解决这些挑战,Imp…

IntelliJ IDEA 使用心得与常用快捷键

刚开始学习写Java的时候,用的eclipse,正式工作后,主要用的myeclipse,去年初在前辈的推荐下,在2折的时候买了正版的 IntelliJ IDEA 和 Pycharm,12.0版终生使用,一年更新。 使用前早就久闻其名&am…