ssh 小技巧-端口转发
我们在使用 ssh 连接的使用有一个很好用功能,就是端口转发,而且使用的方式也很多样,比如我们经常用 vscode 来做远程开发的话,一般远程连接就可以基于 ssh,前面也介绍过 vscode 的端口转发,并且可以配置到 .ssh/config 配置文件里,只不过最近在一次使用的过程中发现了一个问题,就是在一台 Ubuntu 的某云服务器上想 ssh 到另一台服务器上,并且做下端口映射,但是发现报了个错,1
bind: Cannot assign requested address
查了下这个问题,猜测是不是端口已经被占用了,查了下并不是,然后想到是不是端口是系统保留的,1
sysctl -a |grep port_range
结果中1
net.ipv4.ip_local_port_range = 50000 65000 -----意味着50000~65000端口可用
发现也不是,没有限制,最后才查到这个原因是默认如果有 ipv6 的话会使用 ipv6 的地址做映射
所以如果是命令连接做端口转发的话,1
ssh -4 -L 11234:localhost:1234 x.x.x.x
使用-4
来制定通过 ipv4 地址来做映射
如果是在 .ssh/config
中配置的话可以直接指定所有的连接都走 ipv41
2Host *
AddressFamily inet
inet
代表 ipv4,inet6
代表 ipv6
AddressFamily 的所有取值范围是:”any”(默认)、”inet”(仅IPv4)、”inet6”(仅IPv6)。
另外此类问题还可以通过 ssh -v
来打印更具体的信息