SSH的正向连接和反向连接

本文介绍如何通过SSH实现正向与反向连接来访问受限的内部资源。正向连接允许从外部网络通过中间主机访问内部网络资源,而反向连接则允许内部主机向外部主机发起连接请求。

正向连接

// 将中间主机可访问的主机的指定端口 镜像到本地指定端口
ssh -L 本地IP:本地端口:中间主机可访问的IP:中间主机可访问的IP的端口 root@中间主机

案例:
公司为了安全配置了两台机器,一台可供外网访问[公司主机A]。另外一台不能外网访问[公司主机B],但可与[公司主机A]互连。

现在我在遥远外地,我要取公司[主机B]的文件,但此时无人在公司。
但我有一台连接外网的[个人主机P],可以做如下操作:
ssh -L [个人主机P]:[个人主机P未被占用的任意端口]:[公司主机B]:[公司主机B对应服务的端口] [公司主机A用户]@[公司主机A外网IP]

假设:

主机名外网IP内网IP
[公司主机A]218.200.20.1192.168.1.100
[公司主机B]192.168.1.101
[个人主机P]218.200.20.2

我要访问内网101的FTP的话,就在[个人主机P]上执行:
ssh -L 127.0.0.1:2121:192.168.1.101:21 root@218.200.20.1
然后再在[个人主机P]访问ftp即可访问地址为:ftp://127.0.0.1:2121

反向连接

// 将本地可访问的主机的指定端口 镜像到远程指定端口
ssh -R 远程IP:远程端口:本地可访问IP:本地可访问IP的端口 root@远程主机

案例:
公司为了安全配置了两台机器,一台可供外网访问[公司主机A]。另外一台不能外网访问[公司主机B],但可与[公司主机A]互连。

现在我在公司,外网有同事要取公司[主机B]的文件,但公司不能给他[公司主机A]的账号信息,但他知道[公司主机B]的个人FTP用户信息,但不能给我知道,无奈…..。

做以下操作:

现在可知道的信息

主机名外网IP内网IP用户密码
[公司主机A]218.200.20.1192.168.1.100root我知道
[公司主机B]192.168.1.101root不知道
[同事主机P]218.200.20.2root我知道

ssh -R [要接收该映射的主机的可访问IP]:[要接收该映射的主机的未占用端口]:[公司主机A可访问的主机]:[公司主机A可访问的主机的端口] [要接收该映射的主机的用户]@[要接收该映射的主机的IP]

在公司的[公司主机A]上执行
ssh -R 127.0.0.1:2121:192.168.1.101:21 root@218.200.20.2

其实在外地的同事只需要访问本机的127.0.0.1:2121就相当于访问192.168.1.101:21了

### SSH连接的正确语法示例 SSH(Secure Shell)是一种网络协议,用于在不安全的网络中为网络服务提供安全的传输环境。以下为SSH连接的基本语法使用方法: #### 基本语法 ```bash ssh [选项] [用户名称]@[目标主机地址] ``` - `[选项]`:可以指定各种参数,例如端口号、密钥文件等。 - `[用户名称]`:目标主机上的用户名。 - `[目标主机地址]`:目标主机的IP地址或域名。 #### 示例 1. 使用默认设置连接到远程主机: ```bash ssh user@192.168.1.100 ``` 这将尝试通过默认端口(22)连接到IP地址为`192.168.1.100`的主机,并以`user`作为登录用户名[^4]。 2. 指定端口号进行连接: ```bash ssh -p 2222 user@192.168.1.100 ``` 如果目标主机的SSH服务运行在非标准端口(如2222),可以通过`-p`选项指定端口号[^3]。 3. 使用密钥文件进行连接: ```bash ssh -i /path/to/private_key user@192.168.1.100 ``` `-i`选项用于指定私钥文件路径,实现基于密钥的身份验证[^2]。 4. 配置本地端口转发(正向连接): ```bash ssh -L 8080:localhost:80 user@192.168.1.100 ``` 此命令将本地的8080端口转发到远程主机的80端口,允许通过本地访问远程服务[^3]。 5. 配置远程端口转发(反向连接): ```bash ssh -R 9090:localhost:3306 user@192.168.1.100 ``` 此命令将远程主机的9090端口转发到本地的3306端口,允许远程主机访问本地数据库服务。 #### 注意事项 - 在首次连接时,系统会提示是否信任目标主机的公钥指纹。输入`yes`后,系统会将公钥信息保存到`~/.ssh/known_hosts`文件中[^2]。 - 如果需要跳过主机密钥检查(仅用于测试环境),可以使用`-o "StrictHostKeyChecking no"`选项[^4]。 ```bash ssh -o "StrictHostKeyChecking no" user@192.168.1.100 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值