Вопрос Соединение SSH не работает при подключении с определенного IP-адреса


Эта проблема на самом деле для меня на некоторое время, однако, она не «беспокоила» меня достаточно, но теперь становится чем-то вроде разочарования.

Я обновил до 18.04 в мае, а с момента обновления мне не удалось подключиться к хосту с внешнего IP-адреса, который я использовал. При попытке подключения соединение немедленно закрывается. Я вижу соединение в auth.log успешно, но затем сразу после этого происходит отключение соединения.

Сначала я предположил, что, возможно, обновление изменило настройки брандмауэра. Быстрый sudo ufw status numbered бросил это из парка шара, как правило 5 показало:

[ 5] 22                         ALLOW IN    12.12.12.1

(Анонимный IP-адрес по понятным причинам). Нет DENY правил до правила 5.

Хорошо, поэтому я подумал, может быть, sshd_config были изменены и запретили аутентификацию паролем. Поэтому я проверил это, однако, я подтвердил, что запись все еще существует:

Match Address 12.12.12.1
    PasswordAuthentication yes

Итак, подумал я, давайте попробуем другой IP-адрес. Итак, временно, я добавил диапазон IP-адресов для телефонов sshd_config чтобы разрешить аутентификацию по паролю (обычно я использую закрытый ключ, поэтому диапазон IP-адресов уже находится в ufw), добавив следующее:

Match Address 82.132.*.*
    PasswordAuthentication yes

Затем я перезапустил sshd (sudo service sshd restart) и попытался подключиться. Успех! Итак, это не значит, что аутентификация паролей блокируется.

Итак, следующая мысль, это брандмауэр в том месте, где я пытался подключиться. Ну, у меня также есть контейнер 16.04 на хосте, поэтому я добавил запись на моем маршрутизаторе для отправки другого порта в порт SSH контейнера (22). Добавлен внешний IP-адрес в ufw и добавлен PasswordAuthenication yes в sshd_config, Когда я попытался подключиться, соединение было успешным. Таким образом, это не брандмауэр во внешнем местоположении; поскольку я могу подключиться к хосту 16.04.

Поэтому это действительно меня озадачило. Я не понимаю, почему я не могу подключиться, используя аутентификацию по паролю, к хосту. Я признаю, что я не пробовал настраивать еще один контейнер 18.04 и пытаться подключиться к нему. Я более чем счастлив попробовать, однако, если люди считают это актуальным. Я также не пробовал настраивать ключ во внешнем местоположении, однако я специально пытаюсь использовать аутентификацию паролей здесь (да, я знаю, что он не так безопасен).

Чтобы подтвердить, однако, возникает вопрос: почему я не могу подключиться через SSH, используя аутентификацию по паролю, от этого конкретного IP-адреса и как его исправить? Почему он отлично работает с другим IP-адресом, когда у обоих есть соответствующие записи в sshd_config и ufw? Почему соединение неожиданно перестало работать после того, как я обновился до 18.04 (он отлично работал при использовании 16.04), и кажется, что подключение к 16.04 все еще работает, так как я могу подключиться к контейнеру (на хосте 18.04) без проблем с IP-адресом У меня проблемы.

Вероятно, стоит отметить и то, что у меня нет проблем с подключением к другим портам на одном и том же хосте от конкретного внешнего IP. Например, я могу подключить apache без проблем, а также настроить демон передачи и собирался подключиться к веб-сервису, размещенному на нем.

Моя полная конфигурация sshd (с анонимным IP):

#   $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem   sftp    /usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#   X11Forwarding no
#   AllowTcpForwarding no
#   PermitTTY no
#   ForceCommand cvs server

Match Address 12.12.12.1
    PasswordAuthentication yes

Match Address 192.168.1.*
    PasswordAuthentication yes

Для справки, мой выход UFW:

:~sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 8081                       ALLOW IN    Anywhere                  
[ 2] 22                         ALLOW IN    82.132.128.0/17           
[ 3] 10022                      ALLOW IN    88.98.73.0/30             
[ 4] 22                         ALLOW IN    88.98.73.0/30             
[ 5] 22                         ALLOW IN    12.12.12.1                
[ 6] 22                         ALLOW IN    192.168.1.64/26           
[ 7] 22                         DENY IN     Anywhere                  
[ 8] Samba                      DENY IN     192.168.1.254             
[ 9] Samba                      ALLOW IN    192.168.1.0/24            
[10] Plex                       ALLOW IN    192.168.1.0/24            
[11] 8081 (v6)                  ALLOW IN    Anywhere (v6)             
[12] 22 (v6)                    DENY IN     Anywhere (v6)

И выдержка из auth.log когда я попытался подключиться сегодня от IP:

Jun 19 10:08:23 ihy sshd[15066]: Connection reset by 12.12.12.1 port 59644 [preauth]
Jun 19 10:08:45 ihy sshd[15086]: Connection reset by 12.12.12.1 port 30982 [preauth]

Как вы можете видеть, соединения попадают на хост, но мгновенно перезагружаются.

Изменить: при использовании ssh -vvv с одного из хостов Linux (обычно я использую Putty на хосте Windows) на внешний адрес, результат:

OpenSSH_7.2p2, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /usr/local/etc/ssh_config
debug2: resolving "{Domain}" port 10022
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to {Domain} [{IPAddress] port 10022.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{username}/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2
ssh_exchange_identification: read: Connection reset by peer

И вывод из iptables -L:

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ufw-before-logging-input  all  --  anywhere             anywhere
ufw-before-input  all  --  anywhere             anywhere
ufw-after-input  all  --  anywhere             anywhere
ufw-after-logging-input  all  --  anywhere             anywhere
ufw-reject-input  all  --  anywhere             anywhere
ufw-track-input  all  --  anywhere             anywhere
Chain FORWARD (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ufw-before-logging-forward  all  --  anywhere             anywhere
ufw-before-forward  all  --  anywhere             anywhere
ufw-after-forward  all  --  anywhere             anywhere
ufw-after-logging-forward  all  --  anywhere             anywhere
ufw-reject-forward  all  --  anywhere             anywhere
ufw-track-forward  all  --  anywhere             anywhere
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ufw-before-logging-output  all  --  anywhere             anywhere
ufw-before-output  all  --  anywhere             anywhere
ufw-after-output  all  --  anywhere             anywhere
ufw-after-logging-output  all  --  anywhere             anywhere
ufw-reject-output  all  --  anywhere             anywhere
ufw-track-output  all  --  anywhere             anywhere
Chain ufw-after-forward (1 references)
target     prot opt source               destination
Chain ufw-after-input (1 references)
target     prot opt source               destination
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-ns
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-dgm
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:microsoft-ds
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootps
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootpc
ufw-skip-to-policy-input  all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST
Chain ufw-after-logging-forward (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-after-logging-input (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-after-logging-output (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "
Chain ufw-after-output (1 references)
target     prot opt source               destination
Chain ufw-before-forward (1 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ufw-user-forward  all  --  anywhere             anywhere
Chain ufw-before-input (1 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-logging-deny  all  --  anywhere             anywhere             ctstate INVALID
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ACCEPT     udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
ufw-not-local  all  --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251          udp dpt:mdns
ACCEPT     udp  --  anywhere             239.255.255.250      udp dpt:1900
ufw-user-input  all  --  anywhere             anywhere
Chain ufw-before-logging-forward (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             ctstate NEW limit: avg 3/min burst 10 LOG level warning prefix "[UFW AUDIT] "
Chain ufw-before-logging-input (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             ctstate NEW limit: avg 3/min burst 10 LOG level warning prefix "[UFW AUDIT] "
Chain ufw-before-logging-output (1 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             ctstate NEW limit: avg 3/min burst 10 LOG level warning prefix "[UFW AUDIT] "
Chain ufw-before-output (1 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-user-output  all  --  anywhere             anywhere
Chain ufw-logging-allow (0 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "
Chain ufw-logging-deny (2 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             ctstate INVALID limit: avg 3/min burst 10 LOG level warning prefix "[UFW AUDIT INVALID] "
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-not-local (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type MULTICAST
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST
ufw-logging-deny  all  --  anywhere             anywhere             limit: avg 3/min burst 10
DROP       all  --  anywhere             anywhere
Chain ufw-reject-forward (1 references)
target     prot opt source               destination
Chain ufw-reject-input (1 references)
target     prot opt source               destination
Chain ufw-reject-output (1 references)
target     prot opt source               destination
Chain ufw-skip-to-policy-forward (0 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
Chain ufw-skip-to-policy-input (7 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
Chain ufw-skip-to-policy-output (0 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
Chain ufw-track-forward (1 references)
target     prot opt source               destination
Chain ufw-track-input (1 references)
target     prot opt source               destination
Chain ufw-track-output (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW
Chain ufw-user-forward (1 references)
target     prot opt source               destination
Chain ufw-user-input (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:32400
ACCEPT     udp  --  anywhere             anywhere             udp dpt:32400
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:tproxy
ACCEPT     udp  --  anywhere             anywhere             udp dpt:8081
ACCEPT     tcp  --  82.132.128.0/17      anywhere             tcp dpt:ssh
ACCEPT     udp  --  82.132.128.0/17      anywhere             udp dpt:22
ACCEPT     tcp  --  no-dns-yet-12.12.12.0.zen.net.uk/30  anywhere             tcp dpt:10022
ACCEPT     udp  --  no-dns-yet-12.12.12.0.zen.net.uk/30  anywhere             udp dpt:10022
ACCEPT     tcp  --  no-dns-yet-12.12.12.0.zen.net.uk/30  anywhere             tcp dpt:ssh
ACCEPT     udp  --  no-dns-yet-12.12.12.0.zen.net.uk/30  anywhere             udp dpt:22
ACCEPT     tcp  --  no-dns-yet-12.12.12.1.zen.net.uk  anywhere             tcp dpt:ssh
ACCEPT     udp  --  no-dns-yet-12.12.12.1.zen.net.uk  anywhere             udp dpt:22
ACCEPT     tcp  --  no-dns-yet-12.12.12.1.zen.net.uk  anywhere             tcp dpt:10022
ACCEPT     udp  --  no-dns-yet-12.12.12.1.zen.net.uk  anywhere             udp dpt:10022
ACCEPT     tcp  --  ihy.home/26          anywhere             tcp dpt:ssh
ACCEPT     udp  --  ihy.home/26          anywhere             udp dpt:22
DROP       tcp  --  anywhere             anywhere             tcp dpt:ssh
DROP       udp  --  anywhere             anywhere             udp dpt:22
DROP       udp  --  BThomehub.home       anywhere             multiport dports netbios-ns,netbios-dgm /* 'dapp_Samba' */
DROP       tcp  --  api.home             anywhere             multiport dports netbios-ssn,microsoft-ds /* 'dapp_Samba' */
ACCEPT     udp  --  192.168.1.0/24       anywhere             multiport dports netbios-ns,netbios-dgm /* 'dapp_Samba' */
ACCEPT     tcp  --  192.168.1.0/24       anywhere             multiport dports netbios-ssn,microsoft-ds /* 'dapp_Samba' */
ACCEPT     udp  --  192.168.1.0/24       anywhere             multiport dports 1900,mdns,32410,32412,32413,32414 /* 'dapp_Plex' */
ACCEPT     tcp  --  192.168.1.0/24       anywhere             multiport dports 32400,32469 /* 'dapp_Plex' */
Chain ufw-user-limit (0 references)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
Chain ufw-user-limit-accept (0 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
Chain ufw-user-logging-forward (0 references)
target     prot opt source               destination
Chain ufw-user-logging-input (0 references)
target     prot opt source               destination
Chain ufw-user-logging-output (0 references)
target     prot opt source               destination
Chain ufw-user-output (1 references)
target     prot opt source               destination

2
2017-07-18 15:49


происхождения


Что говорит iptables -L на экземпляре, с которым вы не можете войти в систему с вашим желаемым IP-адресом? - jeroen
Connection reset by 12.12.12.1 подсказывает, что это клиентская сторона, которая, возможно, ругается? попробовали ли вы использовать SSH в режиме подробной версии, например. ssh -vvv 12.12.12.1 ? Некоторые ссылки здесь: Значение «Соединение, закрытое xxx [preauth]» в журналах sshd - steeldriver
@steeldriver добавил для вас результат - Larnu
@jeroen не сможет получить это позже, так как мне нужно быть на хозяине. Сообщите вам, когда это доступно. - Larnu
@jeroen обновлен для вас. Если бы удалить выход из контейнера для ssh -vvv подойдет, ум. - Larnu


ответы: