У меня есть два компьютера за одним и тем же маршрутизатором. Давайте назовем их 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
Примечание:
Замените IP-адрес сервера на IP-адрес или DNS-имя вашего сервера.
Измените свой номер порта, как вы установили.
если вы используете пользовательский порт 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
Как я уже объяснял в соответствующий ответ, ssh-клиент позволяет указывать формат URI как ssh://user@host:1234. Например:
ssh ssh://myuser@mydomain.com:2222
где 2222 - это номер порта. Замените номер порта, который вы собираетесь использовать вместо этого. Конечно, помните, что для подключения к указанному порту ssh-сервер (на хосте, к которому вы пытаетесь подключиться) должен в первую очередь прослушивать указанный порт
Не рекомендуется запускать ssh на порту по умолчанию (TCP/ 22), ни пересылать с WAN IP 22 на любой порт, использующий ssh-сервер на IP-адресе локальной сети.
Чтобы заставить ssh-сервер прослушивать любой заданный порт, вам необходимо
Редактировать на /etc/ssh/sshd_config (обратите внимание на d) от #Port 22 к Port 26. Т.е. раскомментируйте и измените порт. Лучше, чем 26 было бы что-то случайным образом выше (ниже 65535), как 42895. Также рассмотрите возможность перехода на PermitRootLogin no.