Think before you speak, read before you think.

ssh端口转发

很多时候服务器集群是有跳板机,远程进行任何操作的时候都是先登陆跳板机,再登陆内网的机器。

我们把本机叫做local,跳板机叫做tiaoban,真正要连接的集群内的服务器叫做node1。如何快速从local登陆到node1? 操作如下:

方法一:

1. 在 tiaoban 上输入如下命令

 ssh -CfNg -L 3333:node1:22 root@node1

-L表示local,即在跳板机上开设一个3333的端口,保证有ssh连接到3333时,转发到node1的22端口。

然后在local去连跳板机的3333端口

ssh -p 3333 root@tiaoban

注意,上面我都用的是root。实际是node1的用户是什么就写什么,这样就可以直接登陆到机器node1了。

这种方法会在跳板机上打开3333端口,暴露了端口。

方法二:通过proxycommand 和 netcat

这种方法不需要对tiaoban和node1进行任何操作,只需在local机器的ssh_config(或是~/.ssh/config)添加如下配置

Host node1
HostName node1
Port 22
ProxyCommand ssh -p 3333 root@tiaoban ; nc %h %p

然后在local输入

ssh root@node1

这样可直接转发,nc的作用是做一个tunnel,在跳板机上不会暴露端口。

应用:在本地启一个 socks5 代理

ssh -D 1081 jpuyy@yyhome -p 22

在外面连接家里的路由器界面

ssh -L 8989:192.168.1.1:80 [email protected]
# 浏览器打开 127.0.0.1:8989 即可管理路由器

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *