Як запустити ssh-сервер на іншому порту?


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

Чому? Що я роблю неправильно? Будь ласка, допоможіть.


Я не знайомий з налаштуванням ftp, але щоб налаштувати порт для ssh, файл, який ви повинні редагувати, - це sshd_config Це може бути / etc / ssh / sshd_config або це може бути / etc / sshd_config (один з двох, перевірте, який існує). І я не впевнений, як ви мали намір перезапустити sshd-сервер у вашій системі * nix, але те, що ви зробили, не виглядає правильним для перезавантаження сервера. Команди виглядають досить довго. Я думаю, це повинен бути один короткий рядок
барлоп

1. перезавантажувати ssh-агент не потрібно. 2. Ви також можете перезапустити ssh-сервер за допомогою системних уподобань -> спільного доступу. 3. (не перевірено), ви також повинні мати можливість просто killall sshdперезапустити їх.
Schwertspize

@Schwertspize - ви маєте рацію - зніміть прапорець і встановіть прапорець для віддаленого входу в систему prference => Спільний доступ це робить: sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist && sudo launchctl load /System/Library/LaunchDaemons/ssh.plist я все це знаю, але проблема все ще є (насправді дві різні машини мають однакову поведінку) - незалежно від того, який порт я вкажіть у / etc / sshd_config ssh-сервер все ще працює на порту за замовчуванням 22. Тож, можливо, мені доведеться вказати порт у більш ніж одному місці ??? Я не маю поняття, чому конкретизацію Port 222просто ігнорують у моєму sshd_config ...
Дрю

так, але моя справжня думка полягала в тому, що ви просто можете вбити сервер, і вам не доведеться зупиняти ssh-агент, саме той агент зберігає ваші ssh-ключі розшифрованими в його «розумі»
Schwertspize

щодо агента ssh - я не знав, що так дякую)) Я відредагую повідомлення
Дрю

Відповіді:


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.


Ви маєте рацію - ftp -not telnet ... моя помилка, але це не має значення ... Незалежно від того, який порт я вказав у / etc / sshd_config , коли я перезавантажую сервер, він все ще працює на 22 .. . wtf ????
Дрю

@Andrew, коли я редагував /etc/sshd_configу системі OS X 10.8.5 (Mountain Lion), я отримав ті самі результати, що і ви. Я виявив, що мені /System/Library/LaunchDaemons/ssh.plistзамість цього потрібно редагувати . Я виправив відповідь, яку я розміщував раніше.
Місячна точка

дякуй чувак! прийнято! Насправді це єдиний спосіб зробити це в OS X ... зміна / etc / sshd_config не вносить жодних змін ... скажімо, якщо ви зробите 2222 в .plist, а 21 на сервері sshd_config почнеться 2222.
Дрю

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

Тепер я можу перейти на свою власну машину через порт 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

Ви змінюєте клієнт SSH в системі, на якій ви працюєте з сервером SSH? Якщо так, це не допоможе вам один біт, якщо ви спробуєте встановити SSH-з'єднання з якоїсь іншої системи, де клієнт SSH очікує використання стандартного порту 22. Звичайний спосіб підключення до SSH-сервера, який прослуховує не -standard порт - це вказати порт у командному рядку з -pопцією. Наприклад, ssh -p 2222 jdoe@example.comякщо сервер прослуховував нестандартний порт 2222. Потім, якщо вам потрібно підключитися до іншого SSH-сервера, який прослуховує на стандартному порту, просто опустіть -p.
Місячна точка

@moonpoint, ти маєш рацію, і саме це я і планував зробити.
Дрю

змінювати клієнта на тій же машині, на якій запускається сервер, не має сенсу. Можливо, це має сенс змінити його на клієнтській машині, але я просто планував вказати порт на стороні клієнта через командний рядок, як каже moonpoint ... як ssh -p 21або інший порт ... Проблема полягає в тому, що навіть зміни / etc / sshd_config та перезапуск сервера ssh не запускає ssh на користувальницький порт. Він просто працює на тому ж порту за замовчуванням 22 - незалежно від того, який порт я вказую в / etc / sshd_config
Drew,

@NZD, serviceкоманда також відсутня в OS X 10.10.
Дрю

Я не знайомий з Mac OS X. serviceКоманда специфічна для Linux (фактично Ubuntu), але на машині Linux / Unix /etc/init.d/ssh restartробить те саме.
NZD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.