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: истекло время ожидания операции
Регрессия: После дополнительного расследования выясняется, что:
- sshd правильно запускается, когда он настроен на отключение (-D), используя
$ sudo /usr/sbin/sshd -D -d -d -d -e
debug2: load_server_config: имя файла /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 настройка протокола 2 debug3: / etc / sshd_config: 30 настройка SyslogFacility AUTHPRIV debug3: /etc/sshd_config:32 установка LogLevel DEBUG3 debug3: /etc/sshd_config:39 установка MaxAuthTries 3 debug3: /etc/sshd_config:108 настройка UseDNS no debug3: /etc/sshd_config:111 установка MaxStartups 5 debug3: /etc/sshd_config:119 настройка подсистемы sftp /usr/libexec/sftp-server debug3: /etc/sshd_config:121 установка IgnoreRhosts да debug3: / etc / sshd_config: 122 настройка IgnoreUserKnownHosts no debug3: /etc/sshd_config:123 установка PrintMotd да debug3: /etc/sshd_config:124 установка StrictModes да debug3: /etc/sshd_config:125 настройка RSAAuthentication да debug3: /etc/sshd_config:126 установка PermitEmptyPasswords no debug3: /etc/sshd_config:127 установка PasswordAuthentication да debug3: /etc/sshd_config:128 установка DenyGroups deniedssh debug3: /etc/sshd_config:129 установка PubkeyAuthentication yes debug3: /etc/sshd_config:130 установка GatewayPorts no debug3: /etc/sshd_config:131 настройка AllowTcpForwarding yes debug3: /etc/sshd_config:132 установка KeepAlive да debug1: версия sshd OpenSSH_5.2p1 debug3: не файл ключа RSA1 / etc / ssh_host_rsa_key. debug1: чтение секретного ключа PEM выполнено: введите RSA debug1: закрытый ключ хоста: #0 тип 1 RSA debug3: не файл ключа RSA1 / etc / ssh_host_dsa_key. debug1: чтение секретного ключа PEM выполнено: тип DSA debug1: закрытый ключ хоста: DSA № 1 типа 2 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 O_NONBLOCK debug1: привязка к порту 22 на::. Сервер прослушивает:: порт 22. debug2: настройка fd 4 O_NONBLOCK debug1: привязка к порту 22 на 0.0.0.0. Сервер прослушивает порт 0.0.0.0 22. debug1: очистка fd 5 O_NONBLOCK debug1: сервер не будет разветвляться при работе в режиме отладки. debug3: send_rexec_state: ввод конфигурации fd = 8, лен 493 debug3: ssh_msg_send: тип 0 debug3: send_rexec_state: сделано debug1: запуск rexec в 5 из 5 newsock 5 pipe -1 sock 8 debug3: recv_rexec_state: ввод fd = 5 debug3: вход в ssh_msg_recv debug3: recv_rexec_state: сделано debug2: parse_server_config: config rexec len 493 debug3: rexec:14 настройка протокола 2 debug3: rexec:30 настройка SyslogFacility AUTHPRIV debug3: rexec:32 настройка LogLevel DEBUG3 debug3: rexec:39 установка MaxAuthTries 3 debug3: rexec:108 настройка UseDNS нет debug3: rexec:111 установка MaxStartups 5 debug3: rexec:119 Настройка подсистемы sftp /usr/libexec/sftp-server debug3: rexec:121 установка IgnoreRhosts да debug3: rexec:122 настройка IgnoreUserKnownHosts no debug3: rexec:123 установка PrintMotd да debug3: rexec:124 установка StrictModes да debug3: rexec:125 настройка RSAAuthentication да debug3: rexec:126 установка PermitEmptyPasswords нет debug3: rexec:127 установка PasswordAuthentication да debug3: rexec:128 установка DenyGroups deniedssh debug3: rexec:129 настройка PubkeyAuthentication да debug3: rexec:130 настройка GatewayPorts no debug3: rexec:131 настройка AllowTcpForwarding yes debug3: rexec:132 установка KeepAlive да debug1: версия sshd OpenSSH_5.2p1 debug3: не файл ключа RSA1 / etc / ssh_host_rsa_key. debug1: чтение секретного ключа PEM выполнено: введите RSA debug1: закрытый ключ хоста: #0 тип 1 RSA debug3: не файл ключа RSA1 / etc / ssh_host_dsa_key. debug1: чтение секретного ключа PEM выполнено: тип DSA debug1: закрытый ключ хоста: DSA № 1 типа 2 debug1: сокеты inetd после подключения: 3, 3 debug3: аудит BSM: соединение от порта 1.131.247 53137 debug3: аудит BSM: идентификатор компьютера iptype 4 010101d9 00000000 00000000 00000000 Подключение от порта 1.131.247 53137
Успешное соединение следует...
- sshd больше не запускает и не принимает входящие соединения в режиме inetd (-i), используя
$ sudo /usr/sbin/sshd -i -d -d -d -e
debug2: load_server_config: имя файла /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 настройка протокола 2 debug3: / etc / sshd_config: 30 настройка SyslogFacility AUTHPRIV debug3: /etc/sshd_config:32 установка LogLevel DEBUG3 debug3: /etc/sshd_config:39 установка MaxAuthTries 3 debug3: /etc/sshd_config:108 настройка UseDNS no debug3: /etc/sshd_config:111 установка MaxStartups 5 debug3: /etc/sshd_config:119 настройка подсистемы sftp /usr/libexec/sftp-server debug3: /etc/sshd_config:121 установка IgnoreRhosts да debug3: / etc / sshd_config: 122 настройка IgnoreUserKnownHosts no debug3: /etc/sshd_config:123 установка PrintMotd да debug3: /etc/sshd_config:124 установка StrictModes да debug3: /etc/sshd_config:125 настройка RSAAuthentication да debug3: /etc/sshd_config:126 установка PermitEmptyPasswords no debug3: /etc/sshd_config:127 установка PasswordAuthentication да debug3: /etc/sshd_config:128 установка DenyGroups deniedssh debug3: /etc/sshd_config:129 установка PubkeyAuthentication yes debug3: /etc/sshd_config:130 установка GatewayPorts no debug3: /etc/sshd_config:131 настройка AllowTcpForwarding yes debug3: /etc/sshd_config:132 установка KeepAlive да debug1: версия sshd OpenSSH_5.2p1 debug3: не файл ключа RSA1 / etc / ssh_host_rsa_key. debug1: чтение секретного ключа PEM выполнено: введите RSA debug1: закрытый ключ хоста: #0 тип 1 RSA debug3: не файл ключа RSA1 / etc / ssh_host_dsa_key. debug1: чтение секретного ключа PEM выполнено: тип DSA debug1: закрытый ключ хоста: DSA № 1 типа 2 debug1: сокеты inetd после подключения: 3, 4 debug3: аудит BSM: соединение с НЕИЗВЕСТНОГО порта 65535 Аудит BSM: сбой getaddrinfo для UNKNOWN: имя узла или имя сервера указаны или неизвестны debug3: аудит BSM: идентификатор компьютера iptype 0 00000000 00000000 00000000 00000000 Соединение с НЕИЗВЕСТНОГО порта 65535 SSH-2,0-OpenSSH_5.2
Соединение не может быть установлено.
Любое предложение в каком направлении искать исправление?
1 ответ
Это довольно нестандартное использование initd
начать что-нибудь на Mac. Вместо, launchd
используется, начиная с sshd
в режиме ad hoc (то есть он не работает как обычный серверный демон, пока не постучат в дверь). Я подозреваю, что использование 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. (Программа sshd-keygen-wrapper представляет собой сценарий оболочки, который сначала устанавливает начальные ключи rsa и dsa в пустых домашних каталогах пользователей.) Однако sshd-keygen-wrapper также запускает sshd как exec /usr/sbin/sshd $@
и является доверенной / внесенной в белый список программой, что касается брандмауэра сокетов.
Вы также можете взять по умолчанию /etc/sshd_config
из резервной копии или другого компьютера, чтобы устранить это как переменную в устранении неполадок.