Ubuntu通过windows代理上网

1. 约定

这里涉及到两台主机,一是执行命令、运行SSH客户端的主机,我们称为本地主机A【Host A】local#;二是接收连接请求、运行SSH服务器的主机,我们称为远程主机B【Host B】remote#

通过密码或密钥等方式验证后,SSH连接建立,主机A可以使用命令行对主机B实施远程控制。

默认本地和远端已经配置好SSH环境。

  • user 是你在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名
  • port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22

2 背景

学校中,每个人都只有一个校园网账号,登录后可以访问外网,假如在本地主机已经登录校园网账号的情况下,再在远程主机登录校园网账号访问外网(下载软件、安装包等等),会将本地挤掉。因此一个好的方法是使用代理,remote需要访问下载的东西,借助local进行转发下载,再返回remote。

3 解决步骤

  1. local端下载 ccproxy软件,这是一个代理的小软件。用起来还不错,当然你也可以用其他的软件实现。
  2. 参照这里设置要代理的remote端IP端口保存确定。
  1. 点击账号,进行账号设置;
  2. 允许范围 —> 允许部分;验证类型 -----> IP地址;点击新建,添加IP保存确定;
  3. 在设置标签页中可以设置端口;

设置好CCPROXY后,启动软件。

  1. terminal通过SSH登录remote端主机。
# ssh 执行远程命令格式:
ssh [options][remote host][command]
ssh username@hostIP

连接到远程主机后,在终端中直接运行命令

# 设置代理
export http_proxy=http://ProxyAddress:Port
export https_proxy=http://ProxyAddress:Port

# 查看代理
env | grep proxy

这个办法的好处是简单直接,并且影响面很小(只对当前终端有效,退出就失效),相比修改系统文件,比较方便,并且不影响实验室其它人使用。

为了方便,不用每次登录终端都敲代码设置,设置连接服务器附带多条命令。

ssh username@hostIP [command]

# 例如执行下面两个命令,命令之间用分号隔开
ssh User@Host 'source /etc/profile ; pwd'

但是会出现问题:连接成功后 执行命令,然后会自动退出
解决办法:

ssh username@hostIP -p 22 -o ServerAliveInterval=60 -t 'pwd;/bin/bash;'

解释

  1. -o ServerAliveInterval:首先-o是为这个连接添加一个属性(option),那么要添加的属性叫做ServerAliveInterval,这个属性的作用是client每隔60秒发送一次请求给server,然后server响应,从而保持连接。

  2. -t:建立这个连接时强制使用伪终端模式,具体效果观者可以试着去掉这个命令对比一下效果。

  3. pwd;/bin/bash;:这就是我们要执行的命令,首先执行了一个pwd命令,查看当前的目录,第二命令是重点,执行/bin/bash命令能够让我们远程执行命令后不自动断开ssh连接。

所以解决自动退出的有效方法就是在执行命令最后使用/bin/bash;这个命令。

  1. 配置windows terminal的json脚本时,注意需要加\号:
commandline": "ssh username@hostIP -p 22  -t \"export http_proxy=http://ProxyAddress:Port;export https_proxy=http://ProxyAddress:Port;/bin/bash\",

参考博文:
参考1
参考2
参考3
参考4
参考5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值