layout: post
title: “使用ssh反向代理实现内网穿透”
date: 2020-11-18 21:41:00
author: “Katsu”
0.准备
主机 | 用户名 | ip地址 |
---|---|---|
主机A | katsu | 192.168.0.10 |
主机B | root | aliyun |
主机C | xxx | 10.10.0.10 |
A是实验室内的主机,C是寝室的主机,二者在不同的局域网,B是阿里云服务器,有公网ip。
目的:使用主机C ssh连接主机A
1. 在主机A上,制作公钥发送到主机B上,在主机A上实现对主机B的免密ssh登陆
ssh-keygen
ssh-copy-id -i .ssh/id_rsa root@aliyun
检查是否能免密登陆
ssh root@aliyun
2. 在主机A上执行ssh反向代理
ssh -fCNR 7280:localhost:22 root@aliyun
7280是主机B的端口,映射到主机A的22端口,之后对主机B的7280端口的访问都会被映射到主机A的22号端口
3. 检测是否成功反向代理
在主机B上执行
netstat -tnlp
如果有sshd的进程,且端口7280在被监听则没问题
4. 使用主机C ssh登陆主机A
使用主机Cssh登陆主机B,然后再用命令
ssh -p7280 katsu@127.0.0.1
登陆主机A,输入密码为主机A的密码,账户名为主机A的账户名
5.autossh自动登陆
上述的方法问题在于每次断开之后ssh可能会关闭,改用autossh可以在ssh关闭后自动打开
在主机A上执行
sudo apt install autossh
autossh -M 7281 -fCNR 7280:localhost:22 root@aliyun
然后从步骤3开始重复上述步骤