OpenSSH 高级运用两则

Crq
Crq
Crq
1160
文章
0
评论
2024年10月21日02:19:35
评论
13 1361字阅读4分32秒
摘要

OpenSSH(OpenBSD Secure Shell)使用 SSH 通过计算机网络加密通信的实现。它是替换由 SSH Communications Security 所提供的商用版本的开放源代码方案。目前 OpenSSH 是 OpenBSD 的子项目。大家都只知道 SSH 可以基于密码或密钥登录远程主机使用,但是你知道吗?其实 SSH 还可以在运用在公网服务器连接私有IP虚拟机,还可以实现命令行 SSH 代理。

00×1、公网服务器连接私有IP虚拟机

试验环境为两台 CentOS 系统:

一台为公网服务器 rabbit :45.xxx.xxx.212

一台为 VirtualBox NAT 模式下的 CentOS 虚拟机 CentosA:10.0.2.15

NAT 普遍使用在有多台主机但只通过一个公有 IP 地址访问因特网的私有网络中,它允许了多台主机共享一个公用 IP 地址(即虚拟机的所有数据包最后都由网络中那台有公网 IP 地址主机转发出互联网)。



首先在 NAT 后面的虚拟机内建立端口转发,通过如下命令:

ssh -gfN -R < 公网映射端口>:127.0.0.1:< 本地端口> < 目标公网>
命令中“SSH”参数介绍
    1. -g:允许远程主机连接到本地建立的转发端口
    1. -fN:不登录不执行脚本或命令(经常连用)
    1. -C:压缩数据传输(小带宽可用)
    -R:程序级端口转发 ,“port:host:hostport”方法(必须使用)

在我们的例子中,命令如下(处于安全的原因,隐藏了远端公网地址):

# ssh -gfN -R 1111:127.0.0.1:22 45.xxx.xxx.212

接着,从公网服务器 45.xxx.xxx.212 上连接 NAT 后面的虚拟机,输入命令:

ssh -p 1111 localhost

以上从公网服务器连接到虚拟机私有 IP 实验结束,下面是运用 SSH 建立 Proxy 代理。

00×2、建立 SSH 代理

代理(Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。

图解:左边和右边的电脑在通讯时候,需要经过中间的电脑中转,而中间的那部电脑就是代理服务器。简单的说就是 A 要访问 C,即便可以直接访问 C,但是有俩个问题:一个是安全的问题,另外还有就是“过滤问题”。于是我们有了“代理”就是让我们 A 连接 B,由 B 去访问 C,B 最后“加密”传送给用户,最后用户就得到了想要的来自 C 的信息。

服务器端代理设置

本机输入如下命令实现 SSH 代理:

ssh -nNT @ -D [user]@[ip] -D [port] 
参数介绍
    1. -n:后台运行
    1. -N:不执行远程指令
    1. -T:不分配 TTY ,只做代理用
    -D:指定代理端口

上述命令的意思是,在本地监听端口 1111,将访问到该端口的流量转发到远程服务器,远程服务器的用户凭证由命令行指定。至此,SSH 代理设置已经完成了。后面要用代理工具完成 SSH 代理。

客户端配置

客户端使用代理设置(本人这里使用的是Chrome浏览器下的 SwitchyOmega 工具,同类代理还可以用 Firefox 浏览器下的工具 AutoProxy):


这里我们通过了代理设置,我们的浏览器和“阿里云”服务器连接完成~这样我们就可以代理上网、加速上网。甚至还可以科学上网!

00×3、总结心得

第一节希望让大家灵活运用 SSH,SSH 的功能不仅仅只是简单的远程连接部署。通过 SSH 设置,可以让任何一台机器通过 SSH 相连接的!第二篇的意义在于享受远程任何一台机器同时,还可以明白,能完成互连的 SSH。当然也可以完成代理~!

上述就是两条 SSH 运用,仅仅只是抛砖引玉。更多好玩的,需要我们自己去发现去总结去设置去享受,也是希望大家不光有宽度更多的还要有“深度”。

weinxin
我的微信
这是我的微信扫一扫
Crq
  • 本文由 发表于 2024年10月21日02:19:35
  • 转载请注明:https://www.cncrq.com/11286.html
Linux 中重置数据库的 root 密码的技巧 Linux教程

Linux 中重置数据库的 root 密码的技巧

其中一项是设置数据库 root 帐户的密码 - 你必须保持私密,并仅在绝对需要时使用。如果你忘记了密码或需要重置密码(例如,当数据库管理员换人或被裁员!),这篇文章会派上用场。
总说Linux,到底什么是Linux? Linux教程

总说Linux,到底什么是Linux?

Linux是最知名和最常用的开源操作系统。作为一个操作系统,Linux是一个软件,位于计算机上的所有其他软件的下面,从这些程序接收请求并将这些请求转发到计算机硬件。
Ubuntu12.04嵌入式交叉编译环境搭建 Linux教程

Ubuntu12.04嵌入式交叉编译环境搭建

在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译,这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代...
在Linux下如何使用JNI Linux教程

在Linux下如何使用JNI

本文简要介绍了 JNI 调用规范,及常用函数。我会通过具体示例程序展示了实现一个本地调用的基本步骤。希望对大家有帮助哈。
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: