Как подключиться по SSH к порту, отличному от 22

У меня есть два компьютера за одним и тем же маршрутизатором. Давайте назовем их A и B.

A может подключиться по SSH к B следующим образом: ssh usr@<internal ip of computer>

B может подключиться к A по SSH, выполнив то же самое, но необходимо использовать внешний IP-адрес. Я перенаправил порт 22 своего маршрутизатора на IP-адрес компьютера A, так что для меня все имеет смысл.

Однако я хочу также перенаправить порт 26 на компьютер B и SSH извне сети, используя внешний IP для обоих, но указав порт 22 или 26, чтобы эффективно выбрать, какой компьютер использовать.

Я попытался разрешить порт 26 через ВЫВОД iptables на A и вводе B, но это, похоже, не сработало. Я также перенаправил порт 26 на внутренний IP-адрес B (через маршрутизатор), как я сделал с 22 для A.

Вот что я получаю, когда пытаюсь подключиться по SSH из A в B, используя внешний IP и порт 26:

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

Варианты исполнения:

  • A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 марта 2012
  • B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10 мая 2012

A имеет Ubuntu 12.04, B - Raspberry Pi с Raspbian.

РЕДАКТИРОВАТЬ: Кое-что, что я забыл вставить: я попробовал переключить конфигурационный файл SSH (я обнаружил, что это /etc/ssh/ssh_config) Я откомментировал (удалил #) линия с Port и изменился 22 к 26. Он все еще выдавал мне сообщение об отказе в соединении. (Я перезагрузился безрезультатно.)

Если вы используете систему Linux и хотите подключиться к SSH-серверу через порт 26, вы можете использовать следующую команду.

ssh user@192.168.1.1 -p 26

Примечание:

  1. Замените IP-адрес сервера на IP-адрес или DNS-имя вашего сервера.
  2. Измените свой номер порта, как вы установили.
  3. если вы используете пользовательский порт SSH, то тот же порт должен быть разрешен для исходящего, входящего соединения на брандмауэре, в противном случае соединение не будет установлено

Похоже, вы не используете SSH на порту 26 на второй машине. Вы можете либо изменить номер порта на этом компьютере на 26.

Либо редактировать /etc/ssh/sshd_config & не забудьте перезапустить SSH (service sshd restart) или оставьте его на 22, но перенаправьте порт 26 на маршрутизаторе на порт 22 на второй машине. Кроме того, не забудьте изменить любые настройки брандмауэра на втором компьютере, чтобы разрешить сквозные подключения.

Я использую порт 22 только для ssh-доступа к интрасети.

Для доступа через Интернет я использую пользовательский (необычный) порт.Это имеет то преимущество, что я уменьшаю нагрузку, создаваемую дочерними скриптами, которые сканируют порт 22 на предмет "хорошо известных имен пользователей".

То внешний процессы sshd контролируются xinetd и работает параллельно с внутренний sshd процесс.В следующем примере я использую порт 12345:

Вы можете изменить это значение на любой доступный номер свободного порта в вашей системе.Возможно, более высокое значение также сделает немного более маловероятным, что этот порт будет сканироваться "быстрое сканирование портов".

То xinetd конфигурация - это:

service ssh-external{    socket_type = stream    wait = no    protocol = tcp    type = UNLISTED    user = root    server = /usr/sbin/sshd    server_args = -i -f  /etc/ssh/external-sshd.config    port = 12345    log_on_failure += USERID}

Файл /etc/ssh/external-ssdh.config может быть копией вашего обычного sshd конфигурация.Убедитесь, что настроены следующие инструкции:

Port 12345AddressFamily inet

Я также предлагаю применить проверку подлинности с открытым ключом и отключить проверку подлинности по паролю для доступа в Интернет:

PasswordAuthentication noPermitEmptyPasswords noChallengeResponseAuthentication no

Порты прослушивания также могут быть жестко привязаны к IP-адресам

/etc/ssh/sshd_config:

ListenAddress 10.10.10.10:22ListenAddress 20.20.20.20:4444

Как я уже объяснял в соответствующий ответ, ssh-клиент позволяет указывать формат URI как ssh://user@host:1234. Например:

ssh  ssh://myuser@mydomain.com:2222

где 2222 - это номер порта. Замените номер порта, который вы собираетесь использовать вместо этого. Конечно, помните, что для подключения к указанному порту ssh-сервер (на хосте, к которому вы пытаетесь подключиться) должен в первую очередь прослушивать указанный порт

Не рекомендуется запускать ssh на порту по умолчанию (TCP/ 22), ни пересылать с WAN IP 22 на любой порт, использующий ssh-сервер на IP-адресе локальной сети.

Чтобы заставить ssh-сервер прослушивать любой заданный порт, вам необходимо

  1. Редактировать на /etc/ssh/sshd_config (обратите внимание на d) от #Port 22 к Port 26. Т.е. раскомментируйте и измените порт. Лучше, чем 26 было бы что-то случайным образом выше (ниже 65535), как 42895.
    Также рассмотрите возможность перехода на PermitRootLogin no.

  2. Протестируйте свою конфигурацию с помощью тестовый режим ssh

    sudo sshd -t
  3. Перезапустить службу ssh-сервера

     sudo systemctl restart sshd.service

Затем из ssh-клиента вы сможете подключиться

ssh user@serverNameOrIP -p 42895

Бонус: mosh

Если пакет mosh установлен на сервере, вы затем используете

mosh --ssh="ssh -p 42895" serverNameOrIP

Обратите внимание, что /etc/ssh/ssh_config - это конфигурация ssh-клиента. Где as /etc/ssh/sshd_config - это конфигурация демона ssh.

Есть ли у вас SSH, запущенный на порту 22 или 26 на второй машине?