ssh设置通过http代理连接远程主机

需求背景

存在A B C三台主机, 由于安全因素或者其他,A不能直接与C通信。 但是存在B可以与A,C通信。 则现在需要在A上通过ssh, 假设B已经搭建好一个http代理,专门来代理ssh访问C的服务。具体方法分为2种常见做法:

1.通过软件 corkscrew作为proxy的客户端
2.通过ncat作为proxy的客户端


不过最终本质是一样的,ssh通过命令 ssh -o ProxyCommand="xxx"的形式设置代理信息,即可使用,过程是对用户透明无感的。

corkscrew

软件安装官网: https://pkgs.org/download/corkscrew


ssh root@{$host_name} -p 22 -o  ProxyCommand="corkscrew ${host} ${port} %h %p" -o IdentityFile=key的绝对路径

举例: A主机上 设置通过B主机作为proxy 连接C主机
ssh root@C -p 22 -o  ProxyCommand="corkscrew B 30080 %h %p" -o IdentityFile=key的绝对路径

ncat
yum install nmap-ncat.x86_64  #安装ncat软件

ssh root@{$host_name} -p 22 -o  ProxyCommand="ncat --proxy-type http --proxy ${host}:${port} %h %p" -o IdentityFile=key的绝对路径

举例:  A主机上 设置通过B主机作为proxy 连接C主机
ssh root@C  -p 22  -o  ProxyCommand="ncat --proxy-type http --proxy B:30080 %h %p" -o IdentityFile=key的绝对路径

问题与解决方案

通过proxy的形式连接ssh,其实大部分人会遇到一个严重的问题。那就是ssh连接很卡, 偶尔能直接连接,偶尔就卡着不动了。那是为何? 很简单 ssh -v加上-v参数,打出debug日志信息查明原因即可,光肉眼看看不出什么花样。假如你卡在最后一条提示信息 : expecting SSH2_MSG_KEX_ECDH_REPLY 类似这样的错误信息,卡着不动,那基本上就是下面我所遇到的问题。


尝试修改eth0网卡的MTU值。 直接 echo “1420” > /sys/class/net/eth0/mtu 然后systemctl restart network即可

详细原因博客详解参考:
https://github.com/johnnian/Blog/issues/44
https://blog.51cto.com/shaonian/1976025

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GEEK JUMP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值