Как SSH на порту, отличном от 22

62

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

A может SSH на B следующим образом: ssh [email protected]<internal ip of computer>

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

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

Я попытался разрешить порт 26 через OUTPUT iptables на A и INPUT из 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 имеет 12.04 Ubuntu, B - малина Pi с Raspbian.

EDIT: что-то, что я забыл ввести: я попытался переключить конфигурационный файл SSH (я нашел его /etc/ssh/ssh_config ). Я раскоментировал (удалил # ) строку с Port и изменил 22 до 26 . Это дало мне сообщение, которое все еще отказалось. (Я перезагрузился безрезультатно.)

    
задан Gary 04.03.2013 в 23:47
источник

4 ответа

27

Кажется, что вы не используете SSH на порту 26 на втором компьютере. Вы можете изменить номер порта на этом компьютере до 26.

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

    
ответ дан Nerdfest 04.03.2013 в 23:53
источник
152

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

ssh [email protected] -p 26

Примечание:

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

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

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

внешние процессы sshd управляются xinetd и работают параллельно с процессом internal 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 12345
AddressFamily inet

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

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
    
ответ дан H.-Dirk Schmitt 05.03.2013 в 00:11
4

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

/ и т.д. / SSH / sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
    
ответ дан OasisInDesert 28.02.2017 в 07:33