SSH从入门到逐渐离谱的奇技淫巧
基础功能 - 登录
大多数情况下,我们会使用ssh
工具通过以下命令来进行远程登录:
ssh admin@gaoxiaodiao.com
上述命令中,包含了两个隐藏的信息:
- 1.端口号是22.
- 2.使用
~/.ssh/id_rsa
私钥去进行远程登录。
当~/.ssh/id_rsa
不存在,或使用该私钥无法登录时,该命令会提示我们输入密码。
如果该主机的提供ssh服务的端口并不是默认的22时(假设为2222),命令如下:
ssh admin@gaoxiaodiao.com -p2222
当我们需要指定私钥进行远程登录,命令如下:
ssh -i ~/Download/id_rsa admin@gaoxiaodiao.com
关于ssh
登录部分的使用,大概就是这么多,接下来我们来讨论一下ssh
工具的其它用法:
实用功能1 - 内网穿透
准确地说,这个功能应该叫端口转发,把本机能访问到的某个端口转发到服务器端。
一提到内网穿透,很多人下意识会想到使用花生壳或者frp等工具,实际上,我们完全可以使用ssh
工具来做到这点。
假设,我本机上运行了一个80端口的http服务,我想让别人也可以访问我本机的80端口,那么我可以执行以下命令:
ssh -R 8080:127.0.0.1:80 admin@gaoxiaodiao.com
上述命令成功执行后,别人就可以在http://gaoxiaodiao.com:8080
端口访问到你本机80端口上提供的http服务。
或者,我想把树莓派的SSH服务暴露到公网上,那么,在我的主机上需要执行的命令就如下:
# 假设我本机的ip是192.168.1.101,树莓派的ip是192.168.1.102
ssh -R 2222:192.168.1.102:22 admin@gaoxiaodiao.com
这样,只要当前的ssh
连接不断开,我便可以通过访问gaoxiaodiao.com
的2222
端口来访问树莓派的SSH服务。
当然目前的这种方式,有一个明显的缺点:会创建一个SSH会话,当SSH会话结束时,其对应的服务也会被中断。
后文会讲到怎么去避免创建SSH会话。
实用功能2 - 流量混淆之特定端口
这个功能,准确地讲也应该叫端口转发,但为了与上一功能做些区分,我这里采用了标题党的做法。
本节要介绍的端口转发其功能是,把服务器上能访问到的某个端口转发到本地。
举个例子,很多情况下,为了隐藏自己的ip,防止被追踪,很多情况下都会使用到Tor
。
实际上,在不进行任何处理的情况下,使用Tor
时,是存在流量特征的,别人虽然不知道你的身份是什么,但知道你正在使用Tor
。
那么为了消除掉Tor
的流量特征,通常我都会使用ssh
工具来掩盖这一点。
首先,我需要在服务器上,创建一个Tor
服务:
docker run -d --restart=always --net host rdsubhas/tor-privoxy-alpine
接下来,我只需要将服务器的9050
端口转发到本地的1081
端口,那么通过本地1081
端口代理的所有流量都会经过Tor
了。
需要执行的命令如下:
ssh -L 1081:127.0.0.1:9050 admin@gaoxiaodiao.com
使用本地1081端口代理访问,检查是否成功:https://check.torproject.org/
此时的流量分析软件,只能知道你在访问gaoxiaodiao.com
的22
端口,并不知道你在使用Tor
。
实用功能3 - 流量混淆之所有流量
上一小节介绍的是将服务器能访问到的某个端口转发的本地,本小节要介绍的功能就更加强大了,那就是ssh
的socks5代理功能。
假设,我们要访问google,按照上小节提到的端口转发的办法去做,那就太麻烦了: 首先,需要ping命令,查看google.com的ip地址。 然后,将google.com的某个ip的443端口,转发至本地的443端口。 最后,修改本机的hosts文件,将google.com域名的主机,设置为127.0.0.1。
这样做的确可以访问google.com,可假如此时的我又想访问youtube.com呢?
是不是又得再来一遍?够不够崩溃???
所以,接下来要介绍的socks5代理的功能就可以大放异彩了。
只需要执行以下命令,就可以在本地1080开启一个sock5代理的端口:
ssh -D 127.0.0.1:1080 admin@gaoxiaodiao.com
接下来,所有通过本机的1080
端口的流量,都会以gaoxiaodiao.com
主机的身份去访问所有的服务。
此功能,常用于临时科学上网、内网渗透跳板等。
其他选项
本小节内容,都是为了方便上述提到的实用功能的使用,选项如下:
-N: 不执行远程命令
-C: 压缩gzip算法
-f: 后台
-T: 不分配TTY
-q:静默模式
-n:禁止ssh读取终端输入( Redirects stdin from /dev/null)
以sock5代理为例,常用命令如下:
ssh -i ~/Documents/id_rsa -NCfTqD 127.0.0.1:1081 admin@gaoxiaodiao.com