SSH反向隧道
需求

详情:
1.阿里云服务器 test-db-01 只能使用密钥登录
2.公司 test 支持用户和密码登录
3.家里的 Linux tmp 支持用户和密码登录
阿里云服务器 test-db-01 生成用户 enddevice 和密钥对
# 创建一个普通用户和生成密钥对
useradd enddevice
su - enddevice
ssh-keygen -t rsa # 直接空格
cd .ssh/
cp id_rsa.pub authorized_keys
chmod 600 authorized_keys
mv id_rsa enddevice
mv id_rsa.pub enddevice.pub
# 下载密钥对
sz enddevice
## 注意点:
/etc/ssh/sshd_config # 下有个可选参数,开启后下面 60000 的端口会监听在 0.0.0.0:60000 上,不然会监听在 127.0.0.1:60000 上
GatewayPorts yes # 允许外部主机连接转发的端口
ClientAliveInterval 30 # 设置心跳
ClientAliveCountMax 10
家里的 Linux tmp 执行
# 上传私钥
rz enddevice
# 创建反向隧道
ssh -i enddevice -p 43999 -fN -R 60000:localhost:22 enddevice@1.2.3.4
# 解析
# -i 指定私钥
# -p 指定阿里云服务器的ssh端口
# -fN 后台运行,不执行远程命令
# -R 60000:localhost:22, 将阿里云的 60000 端口转发到家里的 tmp 22 端口
# enddevice@1.2.3.4,阿里云的用户名@IP地址
公司的 Linux test 执行
# 把私钥 enddevice 上传到 /data/enddevice,并且保存为默认的 /root/.ssh/id_rsa,原因是 ssh -J 无法通过 -i 参数来指定私钥
cp /data/enddevice/enddevice /root/.ssh/id_rsa
ssh -J enddevice@1.2.3.4:43999 root@localhost -p 60000
# 解析
# -J 跳板机
# enddevice@1.2.3.4:43999 阿里云服务器的用户@IP地址:ssh端口
# root@localhost -p 60000 家里的 Linux tmp 的账号@本机地址的 60000 端口,因为反向隧道是建立在阿里云的回环地址的60000上
调试的方法
# 测试从公司 test 直连阿里云服务器
ssh -p 43999 -i enddevice enddevice@1.2.3.4
# 测试从阿里云服务器连接反向隧道端口 家里的 Linux tmp服务器
ssh -p 60000 root@localhost

浙公网安备 33010602011771号