公司内网限制端口,如何在家里自己架设代理服务器实现端口突破
首先你要装
花生壳
,你家里的ADSL拨号应该是
动态IP
。你得把动态IP给做个
动态域名
映射。大部分
路由器
都支持的。然后在你家里的机器上装saygate等代理软件设置
代理服务器
。然后在路由器上做
端口映射
,将家里内网机器的端口映射到路由器
公网
对应端口上。然后你在办公室就可以通过花生壳的域名加端口来访问到你家里机器的代理。ADSL
上行带宽
很窄的,所以你这样的网速会很慢,请有心理准备。如果你是电脑直接拨号,就不需要做什么端口映射了。
还有一种办法是你家里的电脑用linux,办公室的也用linux,用ssh直接创建一个加密隧道。一行命令就可以完成这个上述所有工作了。并且通信还是加密的,你们公司的网管从公司网关上是不知道你到底在干什么的,只知道你用ssh协议登陆了一个linux主机,有一些流量,仅此而已。
老规矩,先说结论:
或者:
注意:由于 macOS 版 Ncat 的 790 和 791 版本的 bug,上述方式不再生效。起码 791 版本在 macOS 10157 上是不行的。此问题在 792 版本中已经解决。
具体原因参见: https://nmaporg/changeloghtml
但 Linux 上没问题。所以增加个 socat 的替补方案:
Scout 本身很强大,但对代理的支持这部分貌似差一些,只支持 SOCKSv4 和 HTTP Proxy,不支持 SOCKS5。详情参考 《socat 初窥门径》 。
有些时候,由于网络限制等原因,不能直接连通过 SSH 连到指定服务器,需要经过代理进行连接。例如如下场景:
其中,
clientnet 不能直接访问 servernet
clientnet 可以访问 proxynet
proxynet 可以访问 servernet
使用 SSH 的 ProxyCommand 选项,配合 nc/Ncat 命令,实现 clientnet 通过代理 proxynet ,以 SSH 访问 servernet 。
(1) nc
macOS 上常用这种方案。但是 nc 不支持需要认证的代理。
常用参数:
(2) Ncat
Ncat 在 macOS 上通过代理连接时会出现连接断开的情况。
常用参数:
以 nc 为例,如使用 Ncat 可以自行替换。
默认为 Socket5 代理,这时可以省略 -X 参数
或者采用另一种写法:
SSH 配置文件位置:
增加如下两行内容:以 nc 为例,如使用 Ncat 可以自行替换。
使用配置文件之后,就不需要在命令行中进行代理配置了。
对于大部分情况,都可以直接使用 nc 或者 Ncat 解决。但对于一些复杂情况,也可以通过其它方案完成。如在 macOS 上想通过需要认证的代理连接,用 nc 不支持代理认证, Ncat 又有些问题。
对于代理类型的问题,可以通过 Brook 来进行类型转换。
1、 corkscrew
只支持 HTTP 代理
如需要访问带认证的代理服务器:
~/ssh/myauth 的内容:
2、 proxytunnel
只支持 HTTP 代理
命令行里只填用户名,会提示输入密码,或者通过环境变量传入。
(完)
win server 想用SSH做代理很难实现,网上有很多教程说下载winsshd呀啥的,但是经过本人实际测试,都不能用,能连上,但是无法上网,SSH这东西的鼻祖就是Linux,所以要把SSH移到win平台上的话,就算成功了,也会非常不稳定,所以建议使用Linux系统。
本文最初发表于 我的个人站点
更详细的解释可以参考 SSH
简单来理解,就是我拥有一台服务器,我现在想要登录上去做一些事情,那就得使用ssh登录到远程的服务器上,才能在上面进行操作。
一开始在远程服务器上面,需要查看一下他的sshd服务启动了没有,如果没有启动,任何客户端主机是连接不上来的,一般如果是自己在云厂商处购买了主机,主机启动的时候就会把sshd服务启动起来。但有可能自己在测试环境搭建机器的时候,是没有默认启动的,这时候就需要在测试机器的终端看一下,命令如下
如果没有启动的话,那就启动一下,命令如下
这里我在测试环境机器的ip是 1921680187, 我在自己的电脑上想要登录这台机器,我要做的就是使用ssh命令去登录1921680187这台主机
我需要告诉1921680187这台主机我以谁的身份去登录, 1921680187会询问密码,命令如下
敲入正确的密码之后,我们就已经成功登录了主机了
这里看到让我输入一个文件名字来保存密匙,我这里示例就输入一个"foxchao"
回车以后,询问是否要输入一个密码来保护这个密匙,为了方便起见,我就不输入了,不然每次使用这个密匙文件还要输一遍密码,直接一路回车就ok,如下所示
到了这里,可以看到我们已经创建好了密匙对
现在我们新建了自己的密匙对之后,把foxchaopub这个文件放到目标的机器上,加入目标机器的 authorized_keys 中就可以了,以后登录的时候就可以免去输入密码的步骤。
那我们先用scp放上去 ,关于scp命令,这里不过多介绍,就是传文件的一个命令,使用也比较简单,具体想了解可以看这里 Linux scp命令
这里表示我要把foxchaopub这个文件拷贝到1921680187这台机器root用户的用户目录下
回车之后会询问密码,输入密码确认之后,文件就传上去了,如下
这时候我们先用密码登上去看看传上去没有
可以看到foxchaopub这个文件已经传上来了
目标主机上如果没有ssh文件夹,就自己创建一个,创建好之后,再创建一个authorized_keys文件。如果有的话就不用了。
把刚才的foxchaopub这个文件内容写进authorized_keys
看一下,已经有内容了
这里需要注意
authorized_keys 文件对权限有哟求,必须是600(-rw——-)或者644
ssh目录 必须是700(drwx——),否则一会儿登录不成功
弄完之后检查一下权限,如果不是的话,改成响应的权限就ok了
在登录之前,要确认一下目标主机是否允许密匙对登录,一般都是打开的,如果没有打开就自己打开
(查看 /etc/ssh/sshd_config 文件内容 中的 PubkeyAuthentication 这一项是否为 yes,如果不是就自己修改成yes之后重启sshd服务 )
为了避免繁琐的每次都敲一长串 user@host 这样的命令, 可以自己在ssh 目录下建一个config文件,文件内容如下,想要多了解一下配置参数使用的,可以看 linux ssh_config和sshd_config配置文件
文件建立好之后,直接使用自己定义的别名登录,非常方便快捷
如果是自己局域网搭建的机器,倒不用在意服务器的安全问题,但如果是暴露在公网上的机器,可以通过公网ip登录的,一定要注意自己服务器的安全问题,最起码不能开放默认端口,以及密码登录
在服务器上查看一下登录的日志,可以看到很多想要尝试登陆机器的人,所以公网上面的机器一定要做好自我保护
这里只列出一小部分的日志
统计一下,可以看到有29190次登录失败的记录
我们改掉默认的端口,以及禁用密码登录,只支持密匙对登录,这样一来,提高了服务器本身的安全性,至少没那么容易被别人登录上来为所欲为。
在服务器上修改sshd的配置文件
保存之后,重启sshd服务
使用自己定义的端口登录
ssh服务器的安装(Windows)。
ssh服务器软件有许多中,这里使用的是免费的freeSSHd。
①首先从官方站点下载软件并安装。
②安装完成后进入配置界面(Server Status),确认SSH server正在运行状态。
③进入Users界面,设定一个访问的用户账户(比如xut)。
这里建立一个叫xut的用户,认证有3种方式可以选择。从以后通过ssh运行命令的方便(无需输入密码)考虑,选择Public key认证方式。选择Password方式的话,每次访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其Shell权限。
④ 进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)。
此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(比如访问限定等)。
注意:服务器端如果有防护墙时应该开发TCP 22号端口最为ssh连接使用。
0条评论