Назад | Перейти на главную страницу

local SSH работает при использовании «localhost», но не с использованием IP-адреса

У меня проблемы с настройкой ssh ​​для ноутбука в моей локальной сети. Я думаю, что сделал все очевидные вещи. На сервере:

ps -A | grep sshd
18278 ?       00:00:00  sshd

и

ss -lnp

показывает sshd, прослушивающий порт 22. Я проверил hosts.deny и hosts.allow, оба пустые. UFW показывает соединения, разрешенные через порт 22, и брандмауэр маршрутизатора выключен.

На клиенте:

ssh -v jane@192.168.2.12                                                                                                   martin@martin-UX21E  7:54PM
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.2.12 [192.168.2.12] port 22.
debug1: Connection established.
debug1: identity file /home/martin/.ssh/id_rsa type -1
debug1: identity file /home/martin/.ssh/id_rsa-cert type -1
debug1: identity file /home/martin/.ssh/id_dsa type -1
debug1: identity file /home/martin/.ssh/id_dsa-cert type -1
debug1: identity file /home/martin/.ssh/id_ecdsa type -1
debug1: identity file /home/martin/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 36:bf:c0:c6:d1:e0:16:bd:f0:8c:88:fe:1b:4b:12:74
debug1: Host '192.168.2.12' is known and matches the ECDSA host key.
debug1: Found key in /home/martin/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
Connection closed by 192.168.2.12

На сервере

ssh localhost

работает нормально, но

ssh 192.168.2.12

нет. По какой-то причине он с радостью принимает соединения, используя имя хоста, но не IP-адрес.

Кто-нибудь может предложить следующий шаг по устранению неполадок?


В ответ на victorcete83:

ssh -vvv jane@192.168.2.12                                                                                                 martin@martin-UX21E  8:00PM
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.2.12 [192.168.2.12] port 22.
debug1: Connection established.
debug1: identity file /home/martin/.ssh/id_rsa type -1
debug1: identity file /home/martin/.ssh/id_rsa-cert type -1
debug1: identity file /home/martin/.ssh/id_dsa type -1
debug1: identity file /home/martin/.ssh/id_dsa-cert type -1
debug1: identity file /home/martin/.ssh/id_ecdsa type -1
debug1: identity file /home/martin/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "192.168.2.12" from file "/home/martin/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/martin/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 36:bf:c0:c6:d1:e0:16:bd:f0:8c:88:fe:1b:4b:12:74
debug3: load_hostkeys: loading entries for host "192.168.2.12" from file "/home/martin/.ssh/known_hosts"
debug3: load_hostkeys: found key type ECDSA in file /home/martin/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys
debug1: Host '192.168.2.12' is known and matches the ECDSA host key.
debug1: Found key in /home/martin/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/martin/.ssh/id_rsa ((nil))
debug2: key: /home/martin/.ssh/id_dsa ((nil))
debug2: key: /home/martin/.ssh/id_ecdsa ((nil))
Connection closed by 192.168.2.12

Если ssh-соединение работает указывает на localhost, означает, что он будет 127.0.0.1. Если это терпит неудачу с указанием на 192.168.2.12 должно быть потому, что ваш ssh прослушивает 127.0.0.1 (localhost).

Проверьте свои ListenAddress в файле конфигурации sshd.

Две минуты - это слишком много. Я уверен твой sshd закрывает соединение из-за настроек в sshd_config. Проверьте LoginGraceTime в sshd_config. По умолчанию это ровно 120 секунд. Попробуйте выставить 300 секунд, а потом попробуйте подключиться. Чтобы ускорить аутентификацию, отключите неиспользуемые методы аутентификации. Если вам нужен только пароль и авторизация Pubkey, установите ChallengeResponseAuthentication к no.

Попробуйте выполнить ssh'ing с другого сетевого хоста на свой ноутбук. Я предполагаю, что в вашем каталоге .ssh есть несколько искаженных или несоответствующих ключей. Запуск на другом хосте устраняет проблему с содержимым каталога .ssh, отличным от authorized_keys.

Другая идея - запустить sshd deamon вручную на сервере с -d флаг для генерации дополнительных отладочных данных на сервере. он будет оставаться на переднем плане и выводить на консоль дебютную информацию.

Вы можете запустить этот второй демон sshd параллельно на другом порту, используя -p <portnumber> вариант при запуске второго демона.

Попробуйте выполнить следующую команду на своем терминале:

sudo ufw app list

Если вы получите строку:

Available applications:
  ...
  OpenSSH
  ... 

тогда ты должен бежать

sudo ufw allow 'OpenSSH'

Это то, что у меня сработало.

debug1: соединение установлено.

Если вы видите это при подключении с удаленного клиента, значит, вы завершили квитирование TCP. Это делает крайне маловероятным наличие проблемы с TCP-оболочками, брандмауэром или адресом прослушивания в sshd_config.

Роуминг не разрешен сервером

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

Сервер решает прервать соединение, поэтому вам следует выяснить, почему. Установите LogLevel = DEBUG в конфигурации sshd (и измените конфигурацию syslog для записи на этом уровне).