2013-09-10 5 views
-1

У меня небольшая проблема с сервером ssh, запущенным на сервере ubuntu. Я использую аутентификацию пары ключей, и я могу подключиться просто отлично, но проблема в том, что я могу подключиться на любом порту (используя туннель), хотя «Порт 22» определен в sshd_config. Почему я могу подключиться к любому порту? Как я могу остановить ssh от прослушивания портов, отличных от порта 22?Возможность подключения к серверу ssh на любом порту с использованием туннеля ssh

enter image description here

enter image description here

+1

Я очень сомневаюсь, что он слушает все порты. пожалуйста, покажите нам вывод 'netstat -ltpn'. – mata

+0

Хорошо, теперь я чувствую себя глупо. Я не могу напрямую подключиться с помощью ssh на любом порту, но я могу подключиться с помощью туннеля. почему это? – iedoc

+0

@iedoc вывод, который вы показываете, говорит, что sshd прослушивает порт 22 (на всех интерфейсах IPv4 и всех интерфейсах IPv6). Здесь ничего нет, что говорит, что он слушает все порты. – nos

ответ

0

В вашем скриншоте Local Address колонке говорит, что вы слушаете на всех интерфейсах на порту 22 (например, 0.0.0.0:22). В столбце «Foreign Address» указывается, что любой может подключаться из любого ip из любого порта (например, 0.0.0.0:*). И ниже для IPV6.

Соединения, как правило, начинаются с некоторого случайного бесплатного порта с высоким номером, поэтому нормально иметь подстановочный знак в Foreign address. Единственное, о чем вы заботитесь, это то, что в локальном порту 22 есть слушатель. Как и вы.

Сначала вы соединяете порт 22 (так как вы не указываете ничего с ключом -p), а затем ssh направляет данные с порта 54321 одной машины на 80 другой. Таким образом, путь данных что-то вроде:

машина A, порт 54321 -> машина A, порт случайным -> машина B, порт 22, машина B, порт 80.

+0

Дело в том, что устройства, которые подключаются к этому серверу, находятся за брандмауэрами, где мы знаем, что порт 22 открыт для уверенности. Мне нужно туннелировать соединение, чтобы он мог пройти через брандмауэр, поэтому я использую туннель ssh.На скриншоте выше, я туннелирую к удаленному порту 80, и я все еще могу подключиться к серверу ssh – iedoc

+0

Я обновил ответ, чтобы закрыть туннелирующую часть. – Edu

+0

ОК спасибо за обновление. Итак, в основном, это как 2 туннеля? поэтому он идет от порта 54321 на локальной машине к порту 22 на локальной машине, а затем из порта 22 на удаленном компьютере в порт 80? – iedoc

0

Так дело в том, когда он не определен, он будет подключаться к серверу ssh по умолчанию по умолчанию 22. Вы можете явно определить порт с помощью «-p xxxx», где xxxx - это порт сервера ssh, к которому вы хотите подключиться. При туннелировании «локальный порт» представляет собой порт вашего компьютера, к которому вы подключитесь, а «удаленный порт» - это порт на удаленном компьютере, на котором будет завершено соединение. поэтому его так:

(localport-> randomport) -> -> -> -> (sshport-> RemotePort)

sshport определяется -p, и по умолчанию, если не определено это порт 22

Смежные вопросы