ssh -L (ошибка: bind: адрес уже используется)

Довольно просто, я знаю, что это случилось со мной раньше. Не удалось найти хороший ответ на AU.

Я запускал сеанс ssh с привязанными портами:

ssh -L 3000:<server_name>:22

Я просто потерял соединение. Когда я пытаюсь повторно подключиться с использованием той же самой команды, я получаю следующую ошибку:

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

Как сбросить ssh на моем компьютере, чтобы снова связать порт? Сброс локальной машины работает.

1
задан 15 April 2014 в 01:31

3 ответа

Я полагаю, что вы все еще что-то подключили к локальному порту 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, если вы не являетесь владельцем процесса, который открывает порт.

10
ответ дан 24 May 2018 в 09:28
  • 1
    Спасибо за ответ. Мне нужно будет в него заглянуть, чтобы посмотреть, смогу ли я воссоздать проблему. Единственное возможное приложение, которое могло прослушивать порт 3000, - это старая сессия ssh, которая была отключена. Мой пользователь владел этим процессом, поэтому я предположил, что смогу запустить killall ssh и умру. Угадайте, что это не так – kbuilds 15 April 2014 в 05:13
  • 2
    Спасибо за напоминание, чтобы использовать sudo - это то, чего мне не хватало. – ACV 12 February 2016 в 00:13

Я смог воссоздать и исправить его, выполнив следующее:

Откройте что-то, что будет перечислять ваши процессы (ps -ae) Убейте процесс с именем sh (kill <proc_number>) 1]

Затем снова запустите ssh-соединение

. В качестве альтернативы я имел успех с помощью:

killall ssh

В терминале на локальном компьютере

5
ответ дан 24 May 2018 в 09:28

еще один претендент: ss

его можно использовать следующим образом: ss -ltp | grep 3000, чтобы найти программу, прослушивающую порт 3000

2
ответ дан 24 May 2018 в 09:28

Другие вопросы по тегам:

Похожие вопросы: