ssh -L(錯誤:綁定:地址已在使用中)




ssh -L 3000:<server_name>:22


bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 3000



I suppose you have still something connected to local port 3000.

You can find it with

netstat -tulpn | grep 3000 

and then dispose of it. For example in my machine:

[:~] % netstat -tulpn | grep 5900
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0  *               LISTEN      2547/vino-server
tcp6       0      0 :::5900                 :::*                    LISTEN      2547/vino-server

correctly identifies the process waiting and connected on port 5900 (vnc server).

Another useful command is

fuser 3000/tcp 

...all of them may need to be run with sudo if you do not own the process which is opening the port.


I was able to recreate and fix it by doing the following:

  • Open up something that will list your processes (ps -ae)
  • Kill the process called sh (kill <proc_number>)

Then reopen the ssh connection

Alternatively, I have had success with:

killall ssh

In the terminal on the local machine


Couldn't you just kill whatever is using that port?

 lsof -ti:5901 | xargs kill -9

lsof -ti:5901 to find whatever is using port 5901.

Pass the whole thing to kill -9 to kill whatever was using port 5901.

Replace with the port you want to open up again.


one more contender: ss

it can be used like this: ss -ltp | grep 3000 to find the program listening on port 3000