ssh -L (error: bind: Address already in use)
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.
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 0.0.0.0:5900 0.0.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