【流量代理-工具1】Mac自带软件OpenSSH的使用

本文详细介绍了OpenSSH客户端的使用,包括基本命令、基于密钥的身份验证以及ProxyCommand的配置。ProxyCommand是OpenSSH特有的功能,允许通过指定的命令建立与远程服务器的连接隧道,实现复杂网络环境下的安全通信。通过实例分析了如何使用nc命令创建SSH隧道,并解析了命令参数的含义和作用。
摘要由CSDN通过智能技术生成

OpenSSH介绍

简介

查看Mac自带的SSH软件信息:ssh -V
在这里插入图片描述

在Linux系统中,OpenSSH是目前最流行的远程系统登录与文件传输应用。

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。

OpenSSH客户端文件

openssl-clients 几个常用文件

[root@1inux ssh]# rpm -ql openssh-clients
/etc/ssh/ssh_config  //客户端配置文件
/usr/bin/scp    //远程复制文件
/usr/bin/sftp    //远程文件共享
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan

ssh客户端使用

ssh客户端基本用法

基本语法:ssh [OPTIONS] [user]@server [COMMAND]

客户端使用参数说明
-l指定用户,例如ssh -l root IP,或ssh root@ip
-p指定端口,默认连接22端口
-X启用X11Forwarding,即转发X界面的请求
-x禁用
-Y启用信任的X11Forwarding
OpenSSH客户端基于密钥的认证

ssh-keygen用法:ssh-keygen [OPTIONS]

客户端使用参数说明
-t{rsa dsa} 密钥类型 默认使用rsa
-b指明密钥长度
-f /PATH/TO/OUTPUT_KEYFILE指明密钥文件
-P ‘’指明加密密钥的密码,此处表示使用空密码
生成密钥对示例ssh-keygen -t rsa

参考:OPENSSH 详解

scp远程复制工具

语法:scp [OPTIONS] SRC…DEST

常用选项说明
-r递归复制,复制目录及内部文件时使用
-p保存源文件元数据信息中的属主、属组及权限
-q静默模式
-P指明远程服务器使用的端口
两种使用模式命令
上传scp [OPTIONS] 本地文件路径 user@ip:远程服务器路径
下载scp [OPTIONS] user@ip:远程服务器路径 本地文件路径

ssh命令ProxyCommand(本文重心)

参数说明

软件比较: ProxyCommand是openssh的特性,putty,xshell,没有这个功能。在windows下面,推荐使用mobaxterm,其基于cgywin,里面移植了一个完整版本的openssh实现,在linux和macos里面直接就是openssh。

连接原理: OpenSSH 的客户端有一个 ProxyCommand 的选项, 用于 SSH 客户端与服务器之间的隧道通信(tunneling). 所谓的隧道技术, 也称代.理技术, 是网络通信技术的一个普遍概念。

连接隧道: ProxyCommand 指定一个命令(或者说程序/进程, 称为 Proxy),SSH 客户端将通过标准 IO 和 Proxy 程序进行正常的 SSH 通信。而 Proxy 连接着 SSH 服务器(一般是一个 Server Proxy, 再由该 Server Proxy 连接服务器)。Proxy 和 Server Proxy 之间组成了一条隧道,图解如下。
在这里插入图片描述

实例分析
ssh -o "ProxyCommand=nc -X 5 -x 127.0.0.1:1080 %h %p" root@106.52.x
命令拆解分析说明
-o “ProxyCommand=”control_command,ssh通过该参数指定 Proxy 程序
nc -X 5使用socks v5 协议
nc -x连接到127.0.0.1:1080
%h %p指定目标机的ip和port,经测试不带该参数也可连接

shell执行 man ssh 查看 -o参数,说明信息:ctl_cmd(control_command),通过ssh调用命令。

shell执行 man nc 查看参数 -x 和 -X:[-X proxy_protocol] [-x
proxy_address[:port]]。
不加参数则表示:[hostname] [port[s]]。

%h表示要连接的目标机,也就是Hostname指定的ip或者主机名。%p表示要连接到目标机的端口。这儿可以直接写死固定值,但是使用%h和%p可以保证在Hostname和Port变化的情况下ProxyCommand这行不用跟着变化。

从执行命令来观察流量过程:首先 ssh 把流量交给 nc ,nc 把流量交给127.0.0.1:1080(Server Proxy监听的端口,即交给Server Proxy),Server Proxy 连接 ssh [options] ip:port command 中指定的目的地 root@106.52.x

参考

OPENSSH 详解,主要参考文章。

OpenSSH系列(扩展一)-ProxyCommand的扩展使用以及实现代码,使用了http协议进行代理,系列文章。

SSH ProxyCommand及其思想

#转载#ssh高级用法 : 使用ProxyCommand透过多层跳板机,解释了%h和%p参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值