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