每天又省好几秒:一键建立到HiveSQL的转发服务

HiveSQL是HIVE上最好玩的服务之一,通过HiveSQL我们可以查询、分析出各种有意思的数据,比如说之前文章中提到的KE。

image.png
(图源 :pixabay)

但是不幸的是,国内无法直接访问HiveSQL服务,我不清楚是HiveSQL封锁了中国大陆的IP,还是我们这边墙了HiveSQL的IP(嗯,我觉得后者的可能性比较大)。

话说这前折腾过各种方式,想在Python脚本中使用代理(Socks5)来绕过限制,访问到HiveSQL,结果发现pymssql抑或是pyodbc都不支持设置Socks5代理。

后来我又想到一个方法,何不用ssh转发把HiveSQL服务器地址转发到本机(Localhost)呢?

在回顾了SSH的三种转发类型之后:

  • 动态转发:-D [bind_address:]port
  • 本地转发:-L [bind_address:]port:host:hostport
  • 远程转发:-R [bind_address:]port:host:hostport

最终弄出个这样一组命令(本地转发)来打通隧道:

ssh -L 1433:sql_server_ip:1433 user@ssh_server_ip -N

嗯,用着还不错,而且我发现有了这个隧道之后,我根本不用在Python程序中用呀,我可以直接使用LINQPad等方便的SQL Server工具呀。

proxy-4620557_960_720.jpg
(图源 :pixabay)

不过用了一段时间时候,我发现一个严重的问题,就是我每次启用上述命令时,都要输入密码,而我给这个账户设置的又是一个超级复杂的密码,每次我都要去翻密码本,复制粘贴进去,好不麻烦!

于是乎,我就想如何才能绕过或者简化输入密码这个过程呢?

其实除了使用Windows自带的ssh指令,我们还可以用Putty作者旗下的另一款软件plink,这款软件支持在命令行指定用户名、密码(比如-l user -pw abc123),但是现在的想法是能用系统自带的软件,尽量不用第三方。

另外一个方案就是修改用户对应的密码为简单密码,这样输入就省事多了,但是这样明显存在被暴力破解的风险,也不明智。

那么剩下的方案就是使用密钥而不是密码登录远程SSH账户,嗯,这个方案最靠谱了。让我们一步一步落到实处。

Windows下也可以使用ssh-keygen生成公私钥对哦:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

成功生成并保持公私钥对
1744793760094.png

接下来我们在要用来做转发的服务器(VPS)上生成一个新用户(不需要密码):

sudo adduser --disabled-password hivesql

按提示完成操作(实际用户名自己随意取)
1744794035023.png

然后就是把之前我们生成的公私钥对的公钥,拷贝到对应用户的.ssh/authorized_keys文件中。

实践证明需要先创建对应.ssh目录(我还对相应用户、组进行的修改),然后用文本编辑器打开相应的公钥,复制后贴到相应文件中即可。

还有就是在/etc/ssh/sshd_config中追加如下内容(根据实际用户名修改)

Match User hivesql
    PasswordAuthentication no
    ChallengeResponseAuthentication no

再重启服务器(vps)的SSH服务即可

sudo systemctl restart ssh

再在Windows下编辑如下脚本:

@color 17
@ssh -L 1433:vip.hivesql.io:1433 -i C:\xxx\xxx\.ssh\hivesql -l hivesql ssh_server_ip -p port -N

并将其保存为hivesql_forwarder.bat类似的名字。

之后我们需要连接hivesql前,点击一下这个文件,就使用127.0.0.1:1433代替vip.hivesql.io:1433啦,非常方便。

proxy-4605834_960_720.jpg
(图源 :pixabay)

经过这样一番折腾,每天又省下来好几秒,感觉生命又延长了好多,真是爽歪歪呀。还有就是,这种畅通无阻的感觉实在是令人着迷呀!

Sort:  

嘻嘻 又抢到了沙发~
恭喜O哥的生命长度又长了许多~ 😄

那必须的,嗷嗷长!

嗯嗯 😄

不得不说,你的手速是真的快。。我只不过离开了一会会,沙发就没了。哈哈

哈哈哈 正好我那个点在 看到了 承让承让了 哈哈哈~

哈哈哈,O哥您必定是长命百岁!幸福绵长的,我们HIVE的小伙伴都需要您。🤣🤣

👍🏻👍🏻

O哥厉害👍