我正在使用 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
如何释放这些端口连接?
正如其他人在评论中所说...该端口绑定到启动它的进程。它将保持打开状态,直到该进程退出。
您可以使用该
-p
参数来netstat
查看哪些进程正在保持哪些端口打开。我强烈建议您将其限制为仅带有-t
标志的 TCP 端口......最后,关闭带有-n
标志的 DNS 查找。因此,您正在查看以下内容:
这应该“列出”当前在状态表中的所有端口,以及进程 ID 或程序名称。最后一部分可能需要通过类似
sudo
(或 Cygwin“以管理员身份运行”)的方式提升权限例如:
只要您的 SSH 会话处于活动状态,该端口就会被阻止。如果您没有使用
-f
可以注销或点击的参数将其生成到后台ctrl- c,则无法在后台会话中执行此操作。您可以使用 列出正在运行的进程
ps
。然后你kankill
这个过程。