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 на моем компьютере, чтобы разрешить повторное подключение порта? Сброс локальной машины работает.

41
задан 20.05.2020, 05:48

4 ответа

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

0
ответ дан 20.05.2020, 05:48
  • 1
    Спасибо за напоминание для использования sudo - that' s, что я пропускал. – Ryan Pergent 20.05.2020, 05:49
  • 2
    Спасибо за ответ. Я должен буду вырыть в него, чтобы видеть, могу ли я воссоздать проблему. Единственное возможное приложение, которое, возможно, слушало на порте 3000, было старой ssh сессией, которая была разъединена. Мой пользователь владел процессом, таким образом, я предположил, что буду в состоянии работать killall ssh и иметь его, умирают. Угадайте that' s не случай – Ryan Pergent 20.05.2020, 05:49

еще один соперник: ss

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

0
ответ дан 20.05.2020, 05:49

Вы не могли только уничтожить то, что использует тот порт?

 lsof -ti:5901 | xargs kill -9

lsof -ti:5901 для нахождения независимо от того, что использует порт 5901.

Передача все это к kill -9 для уничтожения независимо от того, что использовало порт 5901.

Замена портом Вы хотите открыться снова.

0
ответ дан 20.05.2020, 05:49
  • 1
    что, если ничто не использует порт 5901 (или безотносительно локального порта Вы определяете)? – phoibos 20.05.2020, 05:50
  • 2
    Я не вижу процессов даже с sudo. – phoibos 20.05.2020, 05:50
  • 3
    Если Вы осторожны и/или забывчивы как я, можно хотеть выполнить lsof самостоятельно и узнать то, что процесс прежде уничтожает его. lsof -ti:5901 возвратит число процесса, которое Вы тогда передаете kill -9 – Ryan Pergent 20.05.2020, 05:51
  • 4
    Да, Вы могли измениться, номер порта к любому порту блокируется. Я собираюсь отметить это как ответ. – phoibos 20.05.2020, 05:51
  • 5
    Попробуйте sudo если процесс isn' t придумывающий lsof – Ryan Pergent 20.05.2020, 05:52

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

  • Открывают что-то, что перечислит Ваши процессы (ps -ae)
  • , Уничтожают процесс, названный sh (kill <proc_number>)

, Тогда вновь открыли соединение SSH

, С другой стороны, я имел успех с:

killall ssh

В терминале на локальной машине

0
ответ дан 20.05.2020, 05:50

Теги

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