4

Я хочу запустить сервер SSH на порт 21 (для одного из моих локальных хостов).

OS X Yosemite (10.10.4)

Я изменил /etc/httpd_config , добавив:

Port 21

Затем перезапустил сервер:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

Но nmap все еще показывает ssh на стандартном порту 22:

$ sudo nmap -sS -sV -p 21,22 localhost
Password:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-08-10 18:00 PDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).
PORT   STATE  SERVICE VERSION
21/tcp closed ftp
22/tcp open   ssh     OpenSSH 6.2 (protocol 2.0)

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.20 seconds

Зачем? Что я делаю неправильно? Пожалуйста помоги.

2 ответа2

1

В системе Mac OS X, как и в системах Unix и Linux, существует файл /etc/sshd_config . В этом файле вы найдете следующую строку:

#Port 22

Однако, в отличие от систем Linux/Unix, удаление символа # , превращающего строку в комментарий и изменение порта на порт, который вы хотите использовать, и последующий перезапуск демона SSH не приведут к прослушиванию выбранного вами порта. ; это продолжит слушать на стандартном порту, 22.

Однако вы можете заставить систему прослушивать нестандартный порт, отредактировав файл ssh.plist как отмечено в ответах на публикацию «Ошибка сервера». Как изменить порт sshd в Mac OS X? Например:

sudo vi /System/Library/LaunchDaemons/ssh.plist

В этом файле найдите следующий раздел:

<dict>
        <key>Listeners</key>
        <dict>
                <key>SockServiceName</key>
                <string>ssh</string>

Замените ssh в <string>ssh</string> на порт, который вы хотите использовать, например, <string>2222</string> . Затем перезапустите демон SSH, используя две команды ниже:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

Затем, если вы введете команду netstat, например, следующую, вы увидите, что система прослушивает нестандартный порт.

$ netstat -an | grep 2222
tcp6       0      0  *.2222                 *.*                    LISTEN
tcp4       0      0  *.2222                 *.*                    LISTEN

Примечание: может быть, лучше не использовать общеизвестный номер порта, что может привести к дальнейшей путанице. Т.е. может быть лучше использовать порт больше 1024, а не переназначать порт, используемый для стандартной службы, такой как FTP. FTP, а не telnet, использует порт 21. FTP использует его для своего командного порта. Telnet использует порт 23.

0

@ barlop был очень близко. Есть два места, где вы должны сделать эту модификацию. Один для клиента ssh, а другой для демона ssh (т.е. сервера).

Клиент ssh находится в /etc/ssh/ssh_config а демон ssh находится в /etc/ssh/sshd_config .

Затем вы перезапустите ssh с помощью sudo service ssh restart .

Мой nmap теперь сообщает:

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000032s latency).
PORT   STATE  SERVICE VERSION
21/tcp open   ssh     (protocol 2.0)
22/tcp closed ssh

Теперь я могу SSH к моей машине через порт 21:

$ telnet 10.64.10.200 21
Trying 10.64.10.200...
Connected to 10.64.10.200.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

Порт 21 закрыт:

$ telnet 10.64.10.200 22
Trying 10.64.10.200...
telnet: Unable to connect to remote host: Connection refused

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .