当前位置: 首页 > web >正文

【工具类】ssh使用案例

文章目录

  • 1. 一些概念
    • 1.1 本地端口转发
    • 1.2 动态端口转发
    • 1.3 远程端口转发
    • 1.4 归纳
  • 2. 关于ssh的案例
    • 2.1 ssh隧道
      • 2.1.1 描述
      • 2.1.2 实施
        • 让host2免密登录host1
        • 在host2上使用ssh动态端口转发创建ssh隧道
        • host2使用ssh隧道
    • 2.3 排查ssh客户端无法连接ssh服务端
    • 2.4 启动ssh服务

1. 一些概念

1.1 本地端口转发

# 格式
ssh -L [local_ip:]local_port:target_ip:target_port user@ssh-server# eg: 访问127.0.0.1:8080即通过example.com访问192.168.1.123:80。只能单向访问。
ssh -L [127.0.0.1:]8080:192.168.1.123:80 user@example.com

1.2 动态端口转发

# 格式
ssh -D [local_ip:]local_port user@ssh-server # eg:创建了sockets代理(127.0.0.1:1080),任何使用此代理的网络活动将由gateway.example.com来动态决定转发到哪个ip:port
ssh -D 1080 user@gateway.example.com

1.3 远程端口转发

# 格式
ssh —R [remoete_ip:]remote_port:local_ip:local_port user@ssh-server# eg: 本地创建了一个web服务(localhost:3000),通过gateway.com暴露出去。外部访问gateway.com:8080时就能够访问到本地web服务(localhost:3000)
ssh -R 8080:localhost:3000 user@gateway.com

1.4 归纳

  • 通过ssh-server访问指定的ip:port使用本地端口转发
  • 通过ssh-server访问不定的ip:port使用动态端口转发
  • 通过ssh-server暴露自己本地服务时使用远程端口转发

2. 关于ssh的案例

2.1 ssh隧道

2.1.1 描述

  • 问题情景:机架有两台服务器(同一局域网内),一台网络质量好(host1),另一台网络质量糟糕(host2)
  • 解决方案:使用host1作为代理,让host2共享host1的网络能力。可以使用ssh动态端口转发来建立ssh隧道实现。

2.1.2 实施

让host2免密登录host1
# host2: 将在/home/user0/.ssh/目录下生成密钥对文件
ssh-keygen -t rsa -C 'user0@xxx.com'  
# host2: 上传host2公钥给host1,需要输入user0在host1上的登陆密码
ssh-copy-id -i /home/user0/id_rsa.pub user0@host1
在host2上使用ssh动态端口转发创建ssh隧道
# 创建隧道
ssh -D 8081 user0@host1 -N -C -f
-D 指定用于动态转发的端口
-N 禁止ssh隧道执行命令,仅做转发
-C 对转发数据进行压缩,效率更高
-f 后台运行
PS: ssh隧道在socket5协议上进行动态转发,使用ssh隧道需要配置socket5代理# 关闭隧道
ps aux | grep ssh
kill -9 
host2使用ssh隧道
# 给单个命令传递环境变量的临时使用
http_proxy="socks5h://127.0.0.1:8081" https_proxy="socks5h://127.0.0.1:8081" apt update
PS: "socks5h"中的"socks5"表示使用socket5代理,"h"表示hostname解析也走ssh隧道。# 配置环境变量持久使用
echo 'export http_proxy=socks5h://127.0.0.1:8081' > ~/.bashrc
echo 'export https_proxy=socks5h://127.0.0.1:8081' > ~/.bashrc
source ~/.bashrc

PS: apt也有自己的代理配置

sudp vi /etc/apt/apt.conf.d/proxy.conf# /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "socks5h://127.0.0.1:8081";
Acquire::https::Proxy "socks5h://127.0.0.1:8081";

2.3 排查ssh客户端无法连接ssh服务端

# 主机连通性检查
ping <ip>
nmap <ip># 端口连通性检查
telnet <ip> portnmap -p 80,443 <ip>  # 指定端口扫面
nmap 1-1000 <ip>   # 端口范围扫描nc -vz <ip> port
-v verbose
-z tcp

2.4 启动ssh服务

# 查看ssh服务状态
sudo systemctl status ssh# 开启ssh服务(REHL/CentOS是sshd)
sudo systemctl start ssh# ssh服务端配置文件: /etc/ssh/sshd_confg# 允许ssh通过防火墙
sudo ufw allow tcp/22
sudo ufw limit 22/tcp  # 限制 SSH(22/tcp)连接频率: 默认每分钟6次
http://www.xdnf.cn/news/19447.html

相关文章:

  • (HR小科普)人才测评软件的功能和应用
  • CH59x CH58x 触摸按键应用开发实例讲解(二)
  • 【Zephyr炸裂知识系列】11_手撸内存泄露监测算法
  • Pomian语言处理器研发笔记(二):使用组合模式定义表示程序结构的语法树
  • Tiptrans转运 | 免费5国转运地址
  • Web网络开发 -- jQuery框架
  • REST-assured 接口测试编写指南
  • 【Canvas与戳记】蓝底黄面十六角Premium Quality戳记
  • 开发环境全面配置指南:语言环境与数据库工具
  • 基于单片机音乐喷泉/音乐流水灯/音乐播放器设计
  • 规律作息 + 养成好的习惯 + 考研倒计时 111 天 + 线面积分入门 1 下半部分
  • 【LeetCode - 每日1题】鲜花游戏
  • 2025年- H101-Lc209--1979.找出数组的最大公约数(gcd最大公约数)--Java版
  • 【物联网】MQTT(Message Queuing Telemetry Transport)是什么?
  • 深入解析 dex2oat:vdex、cdex、dex 格式转换全流程实战
  • RK3576开发板串口配置及使用
  • 使用 SVM(支持向量机)进行图像分类:从读取图像到训练与分类的完整流程
  • 深入解析Nginx常见模块2
  • 【SoC】【W800】基于W800的PWM实现
  • python pyqt5开发DoIP上位机【源码】
  • 合集:搭建wiki知识库
  • C++广度优先搜索
  • React Native基本用法
  • 从支付工具到收益资产:稳定币在 Berachain 上的二次进化
  • 四、GC 垃圾回收(二)
  • 小模型 vs 大模型:企业 AI 落地的成本、性能与场景适配选择
  • 广东省省考备考(第九十天8.30)——判断推理(第十节课)
  • 企业为什么需要部署数据防泄露系统?
  • 第三十一天:数列求和取模
  • C++讲解---如何设计一个类