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

sshd на Mac больше не принимает соединения в режиме inetd (-i), но не поддерживает отключение (-D), как исправить?

Несколько недель назад вход по ssh на удаленный Mac был невозможен. Проблема началась при обновлении Webmin до версии 1.550 и / или изменении настроек с помощью webmin.

Использование: * Mac OS X 10.6.5 + Webmin 1.550 + Virtualmin 3.66GPL

Ожидаемые результаты: Проблем со входом в систему по ssh нет.

Фактические результаты: ssh: подключение к хосту host.domain.tld порт 22: истекло время операции

Регрессия: после дополнительных исследований выяснилось, что:

  1. sshd запускается правильно, если он настроен на отключение (-D), используя $ sudo /usr/sbin/sshd -D -d -d -d -e
debug2: load_server_config: filename /etc/sshd_config
debug2: load_server_config: done config len = 493
debug2: parse_server_config: config /etc/sshd_config len 493
debug3: /etc/sshd_config:14 setting Protocol 2
debug3: /etc/sshd_config:30 setting SyslogFacility AUTHPRIV
debug3: /etc/sshd_config:32 setting LogLevel DEBUG3
debug3: /etc/sshd_config:39 setting MaxAuthTries 3
debug3: /etc/sshd_config:108 setting UseDNS no
debug3: /etc/sshd_config:111 setting MaxStartups 5
debug3: /etc/sshd_config:119 setting Subsystem sftp /usr/libexec/sftp-server
debug3: /etc/sshd_config:121 setting IgnoreRhosts yes
debug3: /etc/sshd_config:122 setting IgnoreUserKnownHosts no
debug3: /etc/sshd_config:123 setting PrintMotd yes
debug3: /etc/sshd_config:124 setting StrictModes yes
debug3: /etc/sshd_config:125 setting RSAAuthentication yes
debug3: /etc/sshd_config:126 setting PermitEmptyPasswords no
debug3: /etc/sshd_config:127 setting PasswordAuthentication yes
debug3: /etc/sshd_config:128 setting DenyGroups deniedssh
debug3: /etc/sshd_config:129 setting PubkeyAuthentication yes
debug3: /etc/sshd_config:130 setting GatewayPorts no
debug3: /etc/sshd_config:131 setting AllowTcpForwarding yes
debug3: /etc/sshd_config:132 setting KeepAlive yes
debug1: sshd version OpenSSH_5.2p1
debug3: Not a RSA1 key file /etc/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-D'
debug1: rexec_argv[2]='-d'
debug1: rexec_argv[3]='-d'
debug1: rexec_argv[4]='-d'
debug1: rexec_argv[5]='-e'
debug2: fd 3 setting O_NONBLOCK
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug2: fd 4 setting O_NONBLOCK
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: fd 5 clearing O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug3: send_rexec_state: entering fd = 8 config len 493
debug3: ssh_msg_send: type 0
debug3: send_rexec_state: done
debug1: rexec start in 5 out 5 newsock 5 pipe -1 sock 8
debug3: recv_rexec_state: entering fd = 5
debug3: ssh_msg_recv entering
debug3: recv_rexec_state: done
debug2: parse_server_config: config rexec len 493
debug3: rexec:14 setting Protocol 2
debug3: rexec:30 setting SyslogFacility AUTHPRIV
debug3: rexec:32 setting LogLevel DEBUG3
debug3: rexec:39 setting MaxAuthTries 3
debug3: rexec:108 setting UseDNS no
debug3: rexec:111 setting MaxStartups 5
debug3: rexec:119 setting Subsystem sftp    /usr/libexec/sftp-server
debug3: rexec:121 setting IgnoreRhosts yes
debug3: rexec:122 setting IgnoreUserKnownHosts no
debug3: rexec:123 setting PrintMotd yes
debug3: rexec:124 setting StrictModes yes
debug3: rexec:125 setting RSAAuthentication yes
debug3: rexec:126 setting PermitEmptyPasswords no
debug3: rexec:127 setting PasswordAuthentication yes
debug3: rexec:128 setting DenyGroups deniedssh
debug3: rexec:129 setting PubkeyAuthentication yes
debug3: rexec:130 setting GatewayPorts no
debug3: rexec:131 setting AllowTcpForwarding yes
debug3: rexec:132 setting KeepAlive yes
debug1: sshd version OpenSSH_5.2p1
debug3: Not a RSA1 key file /etc/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: inetd sockets after dupping: 3, 3
debug3: BSM audit: connection from 1.1.1.247 port 53137
debug3: BSM audit: iptype 4 machine ID 010101d9 00000000 00000000 00000000
Connection from 1.1.1.247 port 53137

После успешного подключения ...

  1. sshd больше не запускается и не принимает входящие соединения в режиме inetd (-i), используя $ sudo /usr/sbin/sshd -d -d -d -e
debug2: load_server_config: filename /etc/sshd_config
debug2: load_server_config: done config len = 493
debug2: parse_server_config: config /etc/sshd_config len 493
debug3: /etc/sshd_config:14 setting Protocol 2
debug3: /etc/sshd_config:30 setting SyslogFacility AUTHPRIV
debug3: /etc/sshd_config:32 setting LogLevel DEBUG3
debug3: /etc/sshd_config:39 setting MaxAuthTries 3
debug3: /etc/sshd_config:108 setting UseDNS no
debug3: /etc/sshd_config:111 setting MaxStartups 5
debug3: /etc/sshd_config:119 setting Subsystem sftp /usr/libexec/sftp-server
debug3: /etc/sshd_config:121 setting IgnoreRhosts yes
debug3: /etc/sshd_config:122 setting IgnoreUserKnownHosts no
debug3: /etc/sshd_config:123 setting PrintMotd yes
debug3: /etc/sshd_config:124 setting StrictModes yes
debug3: /etc/sshd_config:125 setting RSAAuthentication yes
debug3: /etc/sshd_config:126 setting PermitEmptyPasswords no
debug3: /etc/sshd_config:127 setting PasswordAuthentication yes
debug3: /etc/sshd_config:128 setting DenyGroups deniedssh
debug3: /etc/sshd_config:129 setting PubkeyAuthentication yes
debug3: /etc/sshd_config:130 setting GatewayPorts no
debug3: /etc/sshd_config:131 setting AllowTcpForwarding yes
debug3: /etc/sshd_config:132 setting KeepAlive yes
debug1: sshd version OpenSSH_5.2p1
debug3: Not a RSA1 key file /etc/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: inetd sockets after dupping: 3, 4
debug3: BSM audit: connection from UNKNOWN port 65535
BSM audit: getaddrinfo failed for UNKNOWN: nodename nor servname provided, or not known
debug3: BSM audit: iptype 0 machine ID 00000000 00000000 00000000 00000000
Connection from UNKNOWN port 65535
SSH-2.0-OpenSSH_5.2

Невозможно установить соединение.

Есть предложения, в каком направлении искать исправление?

Довольно нестандартно использовать initd чтобы запустить что-нибудь на Mac. Вместо, launchd используется, начиная sshd специальным образом (т.е. он не запускается как обычный серверный демон, пока не постучат в дверь). Я подозреваю, что использование вами Linux-ориентированного Webmin для управления ssh усугубляет проблему, поскольку Webmin мало что знает о launchd.

Во-первых, убедитесь, что элемент ssh launchd настроен на загрузку, чтобы исключить очевидное.

sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

Это похоже на установку флажка в Server Admin.app в настройках для включения SSH. Проверьте системный журнал, launchctl на что-то жалуется.

Непонятно, почему вы хотите, чтобы Webmin обрабатывал SSH, но конфигурация Apple по умолчанию может быть полезной.

В /System/Library/LaunchDaemons называется sshd.plist. Этот XML-файл указывает, что /usr/libexec/sshd-keygen-wrapper используется как «программа», которая фактически запускает /usr/sbin/sshd используя флаг -i. (The sshd-keygen-обертка Программа представляет собой сценарий оболочки для первой установки начальных ключей rsa и dsa в пустых домашних каталогах пользователя.) sshd-keygen-wrapper, однако, также запускает sshd как exec /usr/sbin/sshd $@ и является надежной программой / программой из белого списка, если речь идет о межсетевом экране сокетов.

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