Как мне определить, какой порт для входа с SSH?


15

У меня удаленно настроен сервер Ubuntu 10.04, который я настраивал некоторое время назад. Пока я записывал имя пользователя и пароль, я, кажется, был умен и изменил обычный порт ssh с 22 на ... что-то еще.

Как мне узнать, что это за порт?

У меня есть доступ к серверу через заднюю дверь хостинговой компании, поэтому я могу выполнять любые необходимые команды Unix, но я не могу войти в систему, используя обычную замазку на моем компьютере.


Это, вероятно, глупо, и у вас уже есть хорошие ответы, но если вы подключались в прошлом, вы можете проверить историю своих терминалов и / или ~/.ssh/config.
Sparhawk

Ответы:


24

Сначала проверьте в файле конфигурации, какой порт настроен:

$ sudo grep Port /etc/ssh/sshd_config
Port 22

Затем либо перезапустите, sshчтобы убедиться, что он загружает только что увиденную конфигурацию, либо выясните, на каком порту sshработает:

$ sudo netstat -tpln | egrep '(Proto|ssh)'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      12586/sshd

Это нормально sshработает на порту 22.


1
Просто примечание: я не думаю, что вам нужно sudo
piertoni

В первой команде вы нуждаетесь, sudoпотому что обычно sshdфайл конфигурации не доступен для чтения. Во втором вы должны sudoиметь возможность разрешить Program name, иначе вы можете видеть только имя процессов, запущенных под вашим собственным пользователем.
Маркос Диона

Я согласен с @piertoni, вам не нужно запускать эту команду с "SUDO".
Аминтабар

8

Если у вас есть доступ к серверу другими способами, просто запустите:

$ sudo grep Port /etc/ssh/sshd_config 
Port NNN

Это вернет строку, подобную показанной выше, где NNNбудет выбранный вами порт.


3

Более простой способ - просто посмотреть файлы конфигурации сервера SSH:

➜  ~  sudo grep Port /etc/ssh/sshd_config 
   Port 22

Также есть проверка на прослушивание портов для каждого процесса с помощью lsof:

sudo lsof -Pi | grep ssh

или любую другую команду вывода списка портов, например netstat -lntu.


3

Если у вас нет доступа к консоли сервера, вам придется проверить все порты с удаленного хоста. Эти утилиты похожи nmap, однако сетевой уровень должен ретранслировать трафик к определенной комбинации хоста (IP-адреса) И порта.


3

Если у вас нет прав доступа к серверу, вы можете найти порт SSH, используя nmapфункцию «сканирования версий»:

nmap -sV -p- <insert target's IP here>

В -sVопции означает «вариант сканирование», а -p-значит «сканировать все порты». Если у вас хорошее соединение и вы уверены, что не будете расстраивать чей-то брандмауэр или IDS, вы можете добавить -T5«сканирование как можно быстрее». Результаты будут выглядеть примерно так:

PORT     STATE SERVICE VERSION
1422/tcp open  ssh      (protocol 2.0)

1
$ sudo netstat -lntp
[sudo] password for XXX:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address  State        PID/Program name
tcp   0      0      0.0.0.0:22       0.0.0.0:*        LISTEN       2799/sshd
tcp6  0      0      :::22            :::*             LISTEN       2799/sshd
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.