Довольно просто, я знаю, что это случалось со мной раньше. Не смог найти хорошего ответа на AU.
Я запускал сеанс ssh с привязанными портами:
ssh -L 3000:<server_name>:22
Я только что потерял связь. Когда я пытаюсь повторно подключиться с помощью той же команды, я получаю следующую ошибку:
bind: Address already in usechannel_setup_fwd_listener: cannot listen to port: 3000
Как мне сбросить ssh на моем компьютере, чтобы разрешить повторную привязку порта? Сброс настроек локального компьютера работает.
Не могли бы вы просто убить все, что использует этот порт?
lsof -ti:5901 | xargs kill -9
lsof -ti:5901
чтобы найти все, что использует порт 5901
.
Передайте все это в kill -9
чтобы убить все, что использовало порт 5901
.
Замените на порт, который вы хотите открыть снова.
Я полагаю, у вас все еще есть что-то, подключенное к локальному порту 3000.
Вы можете найти его с помощью
netstat -tulpn | grep 3000
а затем избавьтесь от него. Например, в моей машине:
[:~] % 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-servertcp6 0 0 :::5900 :::* LISTEN 2547/vino-server
правильно идентифицирует процесс, ожидающий и подключенный к порту 5900 (сервер vnc).
Еще одна полезная команда - это
fuser 3000/tcp
...возможно, все они должны быть запущены с sudo
если вы не являетесь владельцем процесса, который открывает порт.
Я смог воссоздать и исправить это, выполнив следующее:
- Откройте что-нибудь, в чем будут перечислены ваши процессы (
ps -ae
)
- Завершите процесс, вызванный
sh
(kill <proc_number>
)
Затем снова откройте ssh-соединение
В качестве альтернативы, я добился успеха с:
killall ssh
В терминале на локальном компьютере
еще один претендент: ss
его можно использовать следующим образом: ss -ltp | grep 3000
чтобы найти программу, прослушивающую порт 3000