论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
主机系统
›
linux
›
长途访问没有公网IP的服务器
长途访问没有公网IP的服务器
祗疼妳一个
论坛元老
|
2024-12-16 13:44:52
|
显示全部楼层
|
阅读模式
楼主
主题
1890
|
帖子
1890
|
积分
5672
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
言简意赅的讲解SSH解决的痛点
在童鞋们讲解Docker之后,大家碰到了各种题目。互相帮忙的时间发现很多童鞋没有公网IP不能被长途,这时间交流起来犯了难。那本文给大家提供一些解决思绪,在现实开发中,很多个人开发者和小型团队会面临这样的挑战:某些服务器没有公网IP,导致无法直接通过SSH进行长途访问。这时,我们可以借助一台拥有公网IP的服务器来解决这个题目。这篇文章将为你具体讲解怎样通过反向代理技能,使用SSH命令来毗连没有公网IP的服务器,同时我们还将探究一些SSH的常见用法及一些冷门技巧。
背景介绍
偶然我们需要访问位于内网中的服务器,这些服务器没有公网IP,无法通过传统的SSH直接访问。我们可以通过一台拥有公网IP的服务器,使用反向SSH隧道技能将没有公网IP的服务器毗连到公网IP服务器上,然后通过公网IP服务器作为跳板机,访问内网服务器。
假设你有以下两台服务器:
公网IP服务器
:拥有公网IP的服务器,可以直接访问。
目标服务器
:没有公网IP的服务器,位于内网。
我们将通过反向SSH隧道,让目标服务器与公网IP服务器建立毗连,并用公网IP服务器作为跳板机毗连目标服务器。
解决方案:使用SSH反向隧道 (ssh -R)
SSH反向隧道是一种通过长途服务器反向建立隧道的方式。使用ssh -R命令,你可以让目标服务器(没有公网IP的服务器)毗连到公网IP服务器,并将目标服务器的端口映射到公网IP服务器上,从而实现长途访问。
步调1:在没有公网IP的目标服务器上创建反向隧道
假设你在目标服务器上实行以下命令:
ssh -R 2222:localhost:22 user@公网IP服务器
复制代码
这条命令的含义如下:
-R 2222:localhost:22:表示将目标服务器的22端口(SSH端口)映射到公网IP服务器的2222端口。通过公网IP服务器的2222端口,可以访问目标服务器的SSH服务。
user@公网IP服务器:你需要使用你在公网IP服务器上的用户名和IP地址进行毗连。
实行该命令后,目标服务器的SSH服务就通过公网IP服务器的2222端口暴暴露来了。
步调2:从当地装备毗连到公网IP服务器
如今,在你的当地装备上,你可以通过以下命令毗连到公网IP服务器的2222端口:
ssh -p 2222 user@公网IP服务器
复制代码
这条命令会将你毗连到公网IP服务器上的2222端口,该端口现实上是指向目标服务器的SSH服务的,以是user应该是目标服务器的。
步调3:通过公网IP服务器访问目标服务器
一旦你成功毗连到公网IP服务器,你就可以直接通过该服务器访问没有公网IP的目标服务器。可以像使用平凡SSH毗连一样,在公网IP服务器上实行操纵,操纵现实上会影响目标服务器。
常见的SSH用法
除了反向隧道,SSH还提供了许多强大的功能,帮助开发者更高效地管理和访问长途服务器。以下是一些常见的SSH用法:
1. SSH端口转发(Port Forwarding)
除了反向隧道,你还可以使用SSH端口转发(forwarding)来转发端口。常见的方式有当地端口转发和长途端口转发。
当地端口转发
:将当地机器的端口映射到长途服务器的端口。
ssh -L 8080:localhost:80 user@remote_server
复制代码
这条命令将你当地的8080端口映射到长途服务器remote_server的80端口。
长途端口转发
:将长途机器的端口映射到当地机器的端口。
ssh -R 9090:localhost:3000 user@remote_server
复制代码
这条命令将长途服务器remote_server的9090端口映射到当地机器的3000端口。
2. SSH密钥认证(Key-based Authentication)
为了提高安全性,SSH支持使用密钥对进行认证,而不是依靠密码登录。首先,你需要在当地机器生成一对SSH密钥:
ssh-keygen -t rsa
复制代码
然后将公钥上传到长途服务器的~/.ssh/authorized_keys文件中:
ssh-copy-id user@remote_server
复制代码
这样,以后你就可以使用密钥而不是密码来登录长途服务器。
3. SSH代理转发(SSH Agent Forwarding)
如果你需要在长途服务器上使用当地机器的SSH密钥,可以使用SSH代理转发。首先,在当地启动SSH代理:
eval $(ssh-agent)
复制代码
然后将你的密钥添加到SSH代理中:
ssh-add ~/.ssh/id_rsa
复制代码
接着,当你通过SSH登录到长途服务器时,使用-A选项启用代理转发:
ssh -A user@remote_server
复制代码
这样,你在长途服务器上的操纵将可以或许使用当地机器的SSH密钥。
4. SSH的ControlMaster和ControlPersist选项
如果你需要频繁毗连到同一台长途服务器,可以使用ControlMaster和ControlPersist选项来复用SSH毗连,从而加速毗连过程。
在~/.ssh/config文件中添加以下设置:
Host remote_server
ControlMaster auto
ControlPersist 10m
复制代码
这将答应SSH复用毗连,保持毗连一连10分钟,减少每次毗连的开销。
冷门用法:SSH代理隧道
在某些情况下,你可能希望通过SSH建立一个完备的代理隧道,来访问受限的网络资源。使用SSH代理隧道可以将你的网络流量通过SSH通道进行加密传输,绕过防火墙等网络限制。
假设你希望通过SSH隧道访问长途服务器的HTTP服务,可以使用如下命令:
ssh -D 8080 user@remote_server
复制代码
这将创建一个SOCKS代理,所有通过当地8080端口的请求都会通过SSH隧道转发。
总结
通过SSH的反向隧道功能,个人开发者可以轻松地通过公网IP服务器长途访问没有公网IP的内网服务器。这种方式不仅解决了没有公网IP服务器的访问题目,还能扩展为多种SSH常见用法,如端口转发、密钥认证、代理转发等,帮助开发者提高工作服从。
通过上述内容,你就已经基本明白了这个方法,底子用法我也都有展示。如果你能融会贯通,我相信你会很强
Best
Wenhao (楠博万)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
祗疼妳一个
论坛元老
这个人很懒什么都没写!
楼主热帖
容斥原理
信息收集之 端口扫描
教你30分钟快速搭建直播间
【C++】拷贝构造函数的调用时机 ...
高考是人生旅途的一处驿站
ASP.NET Core依赖注入系统学习教程:Se ...
Java EnumMap get()方法具有什么功能呢 ...
JetBrains RubyMine 2022 for Mac(Ruby ...
多态详解
java运算符(超详细!!!) ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Mysql
快速回复
返回顶部
返回列表