Ssh
如何清除本地 ssh 埠以轉發到遠端?
我正在使用 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 no-more-sessions@openssh.com debug1: forking to background debug1: Entering interactive session. debug1: pledge: network debug1: client_input_global_request: rtype hostkeys-00@openssh.com 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 no-more-sessions@openssh.com debug1: forking to background debug1: Entering interactive session. debug1: pledge: network debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
如何釋放這些埠連接?
只要您的 SSH 會話處於活動狀態,該埠就會被阻止。如果您沒有使用
-f
可以註銷或點擊的參數將其生成到後台ctrl
-c
,則無法在後台會話中執行此操作。您可以使用 列出正在執行的程序
ps
。然後你kankill
這個過程。$ 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
正如其他人在評論中所說…該埠綁定到啟動它的程序。它將保持打開狀態,直到該程序退出。
您可以使用該
-p
參數來netstat
查看哪些程序正在保持哪些埠打開。我強烈建議您將其限制為僅帶有-t
標誌的 TCP 埠……最後,關閉帶有-n
標誌的 DNS 查找。因此,您正在查看以下內容:
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 ...