몇 주 전 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 -i -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

연결할 수 없습니다.

수정 사항을 찾아야 할 방향에 대한 제안이 있습니까?

answer

initdMac에서 무엇이든 시작하는 데 사용 하는 것은 비표준 입니다. 대신 launchd가 사용 sshd되어 임시 방식으로 시작됩니다(즉, 문을 두드릴 때까지 일반적인 서버 데몬으로 실행되지 않음). Webmin이 에 대해 많이 알지 못하기 때문에 Linux 중심 Webmin을 사용하여 ssh를 관리하는 것이 문제에 기여하고 있다고 생각합니다 launchd.

먼저, 명백한 것을 제거하기 위해 ssh launchd 항목이 로드되도록 구성되었는지 확인하십시오.

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

이것은 SSH를 활성화하기 위해 설정 옵션에서 Server Admin.app의 상자를 선택하는 것과 유사합니다. syslog를 확인하여 launchctl무언가에 대해 불평 하는지 확인하십시오 .

Webmin이 SSH를 처리하기를 원하는 이유는 명확하지 않지만 Apple의 기본 구성이 켜져 있을 수 있습니다.

/System/Library/LaunchDaemonssshd.plist라는 launchd 항목이 있습니다 . 이 XML 파일은 -i 플래그를 사용하여 /usr/libexec/sshd-keygen-wrapper실제로 시작하는 "프로그램"으로 사용됨을 나타냅니다 /usr/sbin/sshd. ( sshd-keygen-wrapper 프로그램은 빈 사용자 홈 디렉토리에 초기 rsa 및 dsa 키를 먼저 설정하는 셸 스크립트입니다.) 그러나 sshd-keygen-wrapper exec /usr/sbin/sshd [email protected]sshd와 같이 시작 되며 다음과 같이 신뢰할 수 있는/화이트리스트에 있는 프로그램입니다. 소켓 방화벽에 관한 한.

/etc/sshd_config문제 해결에서 변수로 제거하기 위해 백업이나 다른 시스템에서 기본값을 가져올 수도 있습니다 .