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

【工具类】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.dtcms.com/a/358595.html

相关文章:

  • 26届秋招开始啦
  • UE5多人MOBA+GAS 56、WSL + Docker 编排 Linux 服务器与 Windows 客户端
  • 【PCIE系列】1---PCIE系统拓扑结构分析
  • 基于TCN-BiLSTM-SelfAttention神经网络的多输入单输出回归预测【MATLAB】
  • 得物25年春招-安卓部分编程题
  • Odoo与Django 的区别是什么?
  • Ztero文献管理工具插件设置——亲测有效
  • Python实现点云AABB和OBB包围盒
  • 合金电阻选型7大原则-华年商城
  • 趣味学RUST基础篇(结构体方法)
  • 软考中级习题与解答——第一章_数据结构与算法基础(2)
  • 线性代数理论——状态空间
  • uniapp开发 移动端使用字符串替换注意事项
  • CrystalDiskInfo 9.0 最新版安装步骤详解(从下载到查看硬盘状态)​
  • 三重积分的对称性
  • React前端开发_Day6-Day9_极客园项目
  • Spring Data Redis 的使用方法
  • Dify工作流之合同信息提取
  • 【C++】AVL树(详解)
  • Coze源码分析-API授权-获取令牌列表-前端源码
  • Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践
  • 逆向思维下,如何把基金投资做亏?
  • 佛山B2B企业GEO搜索优化科普指南
  • 模拟实现STL中的list容器
  • vue中的与,或,非
  • C++:list容器--模拟实现(下篇)
  • 粒子群优化算法(PSO)
  • vscode terminal远程连接linux服务器GUI图形界面
  • Linux/UNIX系统编程手册笔记:文件I/O、进程和内存分配
  • Ferris Wheel (贪心 | 双指针)