我正在使用 ssh 将本地端口转发到堡垒服务器(10.20.30.40),连接到远程 RDS 数据库。
ssh -i ~/.ssh/id_rsa -f -N -L 5432:db1.cluster-1.region.rds.amazonaws.com:5432 10.20.30.40 -v
...
Authenticated to 10.20.30.40 ([10.20.30.40]:22).
debug1: Local connections to LOCALHOST:5432 forwarded to remote address db1.cluster-1.region.amazonaws.com:5432
debug1: Local forwarding listening on ::1 port 5432.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 5432.
debug1: channel 1: new [port listener]
debug1: Requesting [email protected]
debug1: forking to background
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
将使用本地端口 5432。如果创建新的转发
ssh -i ~/.ssh/id_rsa -f -N -L 5433:db1.cluster-1.region.rds.amazonaws.com:5432 10.20.30.40 -v
将使用 5433 端口。
如果在新的终端启动 5432 将会失败,因为已经在使用中。
Authenticated to 10.20.30.40 ([10.20.30.40]:22).
debug1: Local connections to LOCALHOST:5432 forwarded to remote address db1.cluster-1.region.rds.amazonaws.com:5432
debug1: Local forwarding listening on ::1 port 5432.
bind [::1]:5432: Address already in use
debug1: Local forwarding listening on 127.0.0.1 port 5432.
bind [127.0.0.1]:5432: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 5432
Could not request local forwarding.
debug1: Requesting [email protected]
debug1: forking to background
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
如何释放这些端口连接?
答案1
只要您的 SSH 会话处于活动状态,端口就会被阻止。如果您没有使用参数将其生成到后台,-f
您可以直接注销或点击ctrl- c,但您无法在后台会话中执行此操作。
您可以使用 列出正在运行的进程ps
。然后您就可以查看kill
该进程。
$ ps -af |grep ssh
username 2113 1822 0 10:19 pts/0 00:00:00 ssh -L 5433:db1.cluster-1.region.rds.amazonaws.com:5432 host
$ kill 2113
答案2
正如其他人在评论中所说...该端口与启动它的进程绑定。它将保持打开状态,直到该进程退出。
您可以使用-p
参数来netstat
查看哪些进程保持哪些端口打开。我会高度建议您也将其限制为仅带有标志的 TCP 端口-t
...最后,使用该标志关闭 DNS 查找-n
。
因此,你正在查看的内容如下:
netstat -npt
这应该会“列出”当前状态表中的所有端口,以及进程 ID 或程序名称。最后一部分可能需要通过类似sudo
(或 Cygwin“以管理员身份运行”)的方式提升权限
例如:
$ sudo netstat -npt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8651 127.0.0.1:50644 TIME_WAIT -
tcp 0 0 127.0.0.1:8649 127.0.0.1:53761 TIME_WAIT -
tcp 0 0 127.0.0.1:80 127.0.0.1:58488 TIME_WAIT -
tcp 0 348 172.16.XXX.YYY:22 172.16.XXX.ZZZ:54272 ESTABLISHED 21020/sshd: russell
...