Linux SSH无密码使用私钥远程登录连接详细配置流程

文章目录

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

前言

本文将详细介绍如何将Linux SSH服务与cpolar相结合,并使用私钥进行远程连接。我们将从安装和配置cpolar开始,逐步指导您完成整个设置过程。

在信息技术高速发展的今天,远程访问服务器和数据中心已成为企业日常运营不可或缺的一部分。然而,传统的远程连接方式,如使用用户密码进行SSH登录,虽然简单直接,却存在诸多安全隐患。密码泄露、暴力破解等安全问题频繁发生,严重威胁着企业的信息安全,为了应对这些问题,我们可以采取一种更为安全、稳定的远程连接方式,就是使用私钥进行身份验证。

Linux SSH服务是一种安全、灵活的网络协议,它允许用户以加密的方式远程登录到Linux服务器。与传统的密码登录方式相比,使用私钥进行身份验证具有更高的安全性。私钥是一种通过加密算法生成的密钥对中的一部分,只有持有私钥的用户才能成功登录服务器,这大大降低了密码泄露的风险。

然而,当SSH服务运行在内网环境中时,我们还需要解决内网限制的问题。cpolar正是一款高效、易用的内网穿透工具,它可以将内网服务器的端口映射到公网上,使得我们可以通过公网地址远程访问内网服务。通过cpolar,我们可以轻松地将Linux 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.rhkb.cn/news/450384.html

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

相关文章

【算法】深入理解布隆过滤器

1. 什么是布隆过滤器? 布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于检测某个元素是否在一个集合中。与常见的数据结构如哈希表不同,布隆过滤器无法删除元素,并且会存在一定的误判率&…

实操部署amis-admin

当需要做一个web服务的时候,前端的实现很令我头疼。搜了一圈前端低代码框架后,注意到百度贡献的amis,通过json来写前端,很酷啊。不得不说,一个好的demo项目,真的能让人迅速进入状态,比直接看文档…

c++常用库函数

一.sort排序 快排的改进算法&#xff0c;评价复杂度为(nlogn). 1.用法 sort(起始地址&#xff0c;结束地址下一位&#xff0c;*比较函数) [起始地址&#xff0c;结束地址) (左开右闭) #include<bits/stdc.h> using namespace std; int main() {//sortvector<int&g…

基础sql

在执行删除操作之前&#xff0c;建议先运行一个 SELECT 查询来确认你要删除的记录。这可以帮助你避免误删数据。 删除字段id默认值为空字符串的所有数据 delete from users where id ; 删除字段id默认值为null的所有数据 delete from users where id is null; 删除字段upd…

msvcp140.dll重新安装的解决方法,msvcp140.dll丢失快速修复教程

msvcp140.dll丢失的问题是许多电脑用户经常遇到的问题。msvcp140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;这个软件包包含了许多Windows系统运行所需的重要文件。当msvcp140.dll丢失时&#xff0c;可能会导致许多应用程序无法正常运行&#xff0c…

基于华为云智慧生活生态链设计的智能鱼缸

一. 引言 1.1 项目背景 随着智能家居技术的发展和人们对高品质生活的追求日益增长&#xff0c;智能鱼缸作为一种结合了科技与自然美的家居装饰品&#xff0c;正逐渐成为智能家居领域的新宠。本项目旨在设计一款基于华为云智慧生活生态链的智能鱼缸&#xff0c;它不仅能够提供…

初阶数据结构【2】--顺序表(详细且通俗易懂,不看一下吗?)

本章概述 线性表顺序表顺序表问题与思考彩蛋时刻&#xff01;&#xff01;&#xff01; 线性表 概念&#xff1a;一些在逻辑上成线性关系的数据结构的集合。线性表在逻辑上一定成线性结构&#xff0c;在物理层面上不一定成线性结构。常见的线性表&#xff1a;顺序表&#xff0…

学习文档(6)

Redis数据类型 Redis 常用的数据类型有哪些&#xff1f; Redis 中比较常见的数据类型有下面这些&#xff1a; 5 种基础数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散…

影楼即将倒闭!!!!stable diffusion comfyui制作:AI人像摄影专业工作流

最近我们在学习ComfyUI&#xff0c;并用它搭建的摄影写真工作流&#xff0c;只需几张照片即可生成可交付的艺术写真照。 AI写真有以下好处&#xff1a; 创意无限&#xff1a;AI写真可以创造出超越现实的场景和效果&#xff0c;为用户提供更多的创意空间。用户可以通过简单的输…

MySQL 读写分离

优质博文&#xff1a;IT-BLOG-CN 一、背景 随着机票业务不断增长&#xff0c;订单库的读性能遇到了挑战&#xff0c;因此对订单库进行读写分离操作。主要目的是提高数据库的并发性能和可扩展性。当系统的所有写操作效率尚可&#xff0c;读数据请求效率较低时&#xff0c;比如…

快速解决Windows端口被占用

检查占用的端口号,显示9210端口被占用 使用运行打开cmd&#xff0c;直接输入如下命令 netstat -ano | find "9210"可以看到 9210端口执行的进程是PID为26836 知道PID后打开电脑的任务管理器-详细信息,找到PID是26836的进程,可以看到是QQ,关掉就解决了

微软开源项目 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C++软件异常排查从入门到精通系列教程…

路由通信 的 VLAN技术

一、VLAN基础 虚拟局域网&#xff08;Virtual Local Area Network&#xff0c;VLAN&#xff09; 根据管理功能、组织机构或应用类型对交换局域网进行分段而形成的逻辑网络。 交换机最多支持4094个VLAN&#xff0c;其中默认管理VLAN是VLAN1&#xff0c;不能创建&#xff0c;也…

Python爬虫使用示例-古诗词摘录

一、分析需求 目标地址&#xff1a; https://www.sou-yun.cn/Query.aspx?typepoem&id二、提取诗句 import os import re import requests import parsel#url https://www.sou-yun.cn/PoemIndex.aspx?dynastyTang&author14976&typeJie urlhttps://www.sou-yun.…

关于md5强比较和弱比较绕过的实验

在ctf比赛题中我们的md5强弱比较的绕过题型很多&#xff0c;大部分都是结合了PHP来进行一个考核。这一篇文章我将讲解一下最基础的绕过知识。 MD5弱比较 比较的步骤 在进行弱比较时&#xff0c;PHP会按照以下步骤执行&#xff1a; 确定数据类型&#xff1a;检查参与比较的两…

【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款购物类智能体的开发,来体验一下我的智能体『科技君Tom』

目录 1.1、智能体运行效果1.2、创作灵感来源智能体平台拥有个人化且人性化的大致框架&#xff0c;可以让小白也能搭建出一个智能体其次是拥有丰富的插件&#xff0c;可以更加快速的得到自己想要的效果~ 1.3、如何制作智能体常见问题与解决方案关于人设与回复逻辑插件使用模型的…

【02】Windows特殊权限-Trustedinstaller

知识点&#xff1a; “TrustedInstaller” 是 Windows 操作系统中的一个特殊账户&#xff0c;用于管理和保护重要的系统文件。它是 Windows 模块安装程序 (Windows Modules Installer) 的一部分&#xff0c;负责安装、修改和删除 Windows 更新和可选组件。默认情况下&#xff…

【Java SE 】类和对象详解

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1&#xff0c; 面向对象认识 1.1 什么时面向对象 1.2 面向对象和面向过程 1.2.1 一个例子理解对象和过程 1. 对于电脑来说 2. 对于我们人来说 2. 类的定…

linux用户态条件变量和内核态完成变量

如果我们的线程要等一个条件满足之后才可以继续向下执行&#xff0c;这个条件不满足的话&#xff0c;就要等待这个条件。这种场景经常见到&#xff0c;比如我们使用recv接收网络数据的时候&#xff0c;或者使用epoll_wait来等待事件的时候&#xff0c;在默认情况下&#xff0c;…

双指针 — 复写零

目录 1. 题目解析 2. 算法讲解 1.算法原理 2.“异地”操作 3.“就地”操作 误解 正解 从后往前完成复写操作 找到最后一个复写的数 处理边界情况 3. 编写代码 正解顺序 1.找到最后一个复写的数 2.处理边界情况 3.从后往前完成复写操作 性能分析&#xff1a; …