upgrading openssh 3.8.1p1-1 -> 3.9p1-1 breaks privilege separation

Matt Swift swift@alum.mit.edu
Wed Aug 18 14:45:00 GMT 2004


I've verified on two machines running XP Pro with up-to-date Cygwin
installations that upgrading from openssh 3.8.1p1-1 to openssh 3.9p1-1
breaks sshd when running with privilege separation (the default).
Clients (including "ssh localhost") can not log into the Cygwin sshd.
Either turning off privilege separation in /etc/sshd_config or
downgrading and rebooting resolves the problem.

I have no further insight into this problem; I mainly want just to report it.

When a client tries to log in to 3.9p1-1 sshd, the -v -v -v output
leading up to the problem is:

    debug2: channel 0: request shell
    debug2: fd 3 setting TCP_NODELAY
    debug2: callback done
    debug2: channel 0: open confirm rwindow 0 rmax 32768
    debug2: channel 0: rcvd adjust 131072
    debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
    debug2: channel 0: rcvd eof
    debug2: channel 0: output open -> drain
    debug2: channel 0: rcvd close
    debug2: channel 0: close_read
    debug2: channel 0: input open -> closed
    debug3: channel 0: will not send data after close
    debug1: getpeername: Socket operation on non-socket
    debug1: do_cleanup
    debug3: channel 0: will not send data after close
    debug2: channel 0: obuf empty
    debug2: channel 0: close_write
    debug2: channel 0: output drain -> closed
    debug2: channel 0: almost dead
    debug2: channel 0: gc: notify user
    debug2: channel 0: gc: user detached
    debug2: channel 0: send close
    debug2: channel 0: is dead
    debug2: channel 0: garbage collecting
    debug1: channel 0: free: client-session, nchannels 1
    debug3: channel 0: status: The following connections are open:
      #0 client-session (t4 r0 i3/0 o3/0 fd -1/-1)

    debug3: channel 0: close_fds r -1 w -1 e 6
    Connection to 192.168.0.234 closed.
    debug1: Transferred: stdin 0, stdout 0, stderr 37 bytes in 0.1 seconds
    debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 398.5
    debug1: Exit status 255
    [beth] swift>

The corresponding Cygwin sshd "-d -d -d" output (from start to end)
is the following (I've deleted actual ssh keys from the output).  The
home directory of user "swift" is /cygdrive/c/swift rather than the
default "/home/swift".

    debug2: load_server_config: filename /etc/sshd_config
    debug2: load_server_config: done config len = 266
    debug2: parse_server_config: config /etc/sshd_config len 266
    debug1: sshd version OpenSSH_3.9p1
    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]='-e'
    debug1: rexec_argv[3]='-d'
    debug1: rexec_argv[4]='-d'
    debug1: rexec_argv[5]='-d'
    debug2: fd 3 setting O_NONBLOCK
    debug1: Bind to port 22 on 0.0.0.0.
    Server listening on 0.0.0.0 port 22.
    debug3: fd 4 is not O_NONBLOCK
    debug1: Server will not fork when running in debugging mode.
    debug3: send_rexec_state: entering fd = 7 config len 266
    debug3: ssh_msg_send: type 0
    debug3: send_rexec_state: done
    debug1: rexec start in 4 out 4 newsock 4 pipe -1 sock 7
    debug3: recv_rexec_state: entering fd = 5
    debug3: ssh_msg_recv entering
    debug3: recv_rexec_state: done
    debug2: parse_server_config: config rexec len 266
    debug1: sshd version OpenSSH_3.9p1
    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
    Connection from 192.168.0.2 port 39493
    debug1: Client protocol version 2.0; client software version OpenSSH_3.8.1p1 Debian 1:3.8.1p1-4
    debug1: match: OpenSSH_3.8.1p1 Debian 1:3.8.1p1-4 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_3.9p1
    debug2: fd 3 setting O_NONBLOCK
    debug2: Network child is on pid 2716
    debug3: preauth child monitor started
    debug3: mm_request_receive entering
    debug1: list_hostkey_types: ssh-rsa,ssh-dss
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
    debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
    debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
    debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
    debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
    debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
    debug2: kex_parse_kexinit: none,zlib
    debug2: kex_parse_kexinit: none,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: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
    debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
    debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
    debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
    debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
    debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
    debug2: kex_parse_kexinit: none,zlib
    debug2: kex_parse_kexinit: none,zlib
    debug2: kex_parse_kexinit: 
    debug2: kex_parse_kexinit: 
    debug2: kex_parse_kexinit: first_kex_follows 0 
    debug2: kex_parse_kexinit: reserved 0 
    debug2: mac_init: found hmac-md5
    debug1: kex: client->server aes128-cbc hmac-md5 none
    debug2: mac_init: found hmac-md5
    debug1: kex: server->client aes128-cbc hmac-md5 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received
    debug3: mm_request_send entering: type 0
    debug3: monitor_read: checking request 0
    debug3: mm_answer_moduli: got parameters: 1024 1024 8192
    debug3: mm_choose_dh: waiting for MONITOR_ANS_MODULI
    debug3: mm_request_receive_expect entering: type 1
    debug3: mm_request_receive entering
    debug3: mm_request_send entering: type 1
    debug3: mm_choose_dh: remaining 0
    debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
    debug2: dh_gen_key: priv key bits set: 133/256
    debug2: bits set: 500/1024
    debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
    debug2: monitor_read: 0 used once, disabling now
    debug3: mm_request_receive entering
    debug2: bits set: 484/1024
    debug3: mm_key_sign entering
    debug3: mm_request_send entering: type 4
    debug3: mm_key_sign: waiting for MONITOR_ANS_SIGN
    debug3: mm_request_receive_expect entering: type 5
    debug3: mm_request_receive entering
    debug3: monitor_read: checking request 4
    debug3: mm_answer_sign
    debug3: mm_answer_sign: signature 0x100ea4a8(143)
    debug3: mm_request_send entering: type 5
    debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
    debug2: kex_derive_keys
    debug2: set_newkeys: mode 1
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug2: monitor_read: 4 used once, disabling now
    debug3: mm_request_receive entering
    debug2: set_newkeys: mode 0
    debug1: SSH2_MSG_NEWKEYS received
    debug1: KEX done
    debug1: userauth-request for user swift service ssh-connection method none
    debug1: attempt 0 failures 0
    debug3: mm_getpwnamallow entering
    debug3: mm_request_send entering: type 6
    debug3: monitor_read: checking request 6
    debug3: mm_answer_pwnamallow
    debug3: mm_answer_pwnamallow: sending MONITOR_ANS_PWNAM: 1
    debug3: mm_request_send entering: type 7
    debug2: monitor_read: 6 used once, disabling now
    debug3: mm_request_receive entering
    debug3: mm_getpwnamallow: waiting for MONITOR_ANS_PWNAM
    debug3: mm_request_receive_expect entering: type 7
    debug3: mm_request_receive entering
    debug2: input_userauth_request: setting up authctxt for swift
    debug3: mm_inform_authserv entering
    debug3: mm_request_send entering: type 3
    debug3: monitor_read: checking request 3
    debug3: mm_answer_authserv: service=ssh-connection, style=
    debug2: monitor_read: 3 used once, disabling now
    debug3: mm_request_receive entering
    debug2: input_userauth_request: try method none
    debug3: mm_auth_password entering
    debug3: mm_request_send entering: type 10
    debug3: monitor_read: checking request 10
    debug3: mm_answer_authpassword: sending result 0
    debug3: mm_request_send entering: type 11
    Failed none for swift from 192.168.0.2 port 39493 ssh2
    debug3: mm_request_receive entering
    debug3: mm_auth_password: waiting for MONITOR_ANS_AUTHPASSWORD
    debug3: mm_request_receive_expect entering: type 11
    debug3: mm_request_receive entering
    debug3: mm_auth_password: user not authenticated
    Failed none for swift from 192.168.0.2 port 39493 ssh2
    debug1: userauth-request for user swift service ssh-connection method publickey
    debug1: attempt 1 failures 1
    debug2: input_userauth_request: try method publickey
    debug1: test whether pkalg/pkblob are acceptable
    debug3: mm_key_allowed entering
    debug3: mm_request_send entering: type 20
    debug3: monitor_read: checking request 20
    debug3: mm_answer_keyallowed entering
    debug3: mm_answer_keyallowed: key_from_blob: 0x100e2d60
    debug1: temporarily_use_uid: 1003/544 (e=18/544)
    debug1: trying public key file /cygdrive/c/swift/.ssh/authorized_keys
    debug3: key_read: type mismatch
    debug2: user_key_allowed: check options: 'ssh-dss AAAAB---etc
    '
    debug2: key_type_from_name: unknown key type 'AAAAB---etc
    debug3: key_read: missing keytype
    debug2: user_key_allowed: advance: 'AAAAB---etc
    '
    debug3: key_read: type mismatch
    debug2: user_key_allowed: check options: 'ssh-dss AAAAB---etc
    '
    debug2: key_type_from_name: unknown key type 'AAAAB---etc
    debug3: key_read: missing keytype
    debug2: user_key_allowed: advance: 'AAAAB---etc
    '
    debug3: key_read: type mismatch
    debug2: user_key_allowed: check options: 'ssh-dss AAAAB---etc
    '
    debug2: key_type_from_name: unknown key type 'AAAAB---etc
    debug3: key_read: missing keytype
    debug2: user_key_allowed: advance: 'AAAAB---etc
    '
    debug3: key_read: type mismatch
    debug2: user_key_allowed: check options: 'ssh-dss AAAAB---etc
    '
    debug2: key_type_from_name: unknown key type 'AAAAB---etc
    debug3: key_read: missing keytype
    debug2: user_key_allowed: advance: 'AAAAB---etc
    '
    debug3: key_read: type mismatch
    debug2: user_key_allowed: check options: 'ssh-dss AAAAB---etc
    '
    debug2: key_type_from_name: unknown key type 'AAAAB---etc
    debug3: key_read: missing keytype
    debug2: user_key_allowed: advance: 'AAAAB---etc
    '
    debug3: key_read: type mismatch
    debug2: user_key_allowed: check options: 'ssh-dss AAAAB---etc
    '
    debug2: key_type_from_name: unknown key type 'AAAAB---etc
    debug3: key_read: missing keytype
    debug2: user_key_allowed: advance: 'AAAAB---etc
    '
    debug1: restore_uid: (unprivileged)
    debug2: key not found
    debug1: temporarily_use_uid: 1003/544 (e=18/544)
    debug1: trying public key file /cygdrive/c/swift/.ssh/authorized_keys2
    debug1: restore_uid: (unprivileged)
    debug3: mm_answer_keyallowed: key 0x100e2d60 is disallowed
    debug3: mm_request_send entering: type 21
    debug3: mm_request_receive entering
    debug3: mm_key_allowed: waiting for MONITOR_ANS_KEYALLOWED
    debug3: mm_request_receive_expect entering: type 21
    debug3: mm_request_receive entering
    debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa
    Failed publickey for swift from 192.168.0.2 port 39493 ssh2
    debug1: userauth-request for user swift service ssh-connection method publickey
    debug1: attempt 2 failures 2
    debug2: input_userauth_request: try method publickey
    debug1: test whether pkalg/pkblob are acceptable
    debug3: mm_key_allowed entering
    debug3: mm_request_send entering: type 20
    debug3: monitor_read: checking request 20
    debug3: mm_answer_keyallowed entering
    debug3: mm_answer_keyallowed: key_from_blob: 0x100e2d80
    debug1: temporarily_use_uid: 1003/544 (e=18/544)
    debug1: trying public key file /cygdrive/c/swift/.ssh/authorized_keys
    debug1: matching key found: file /cygdrive/c/swift/.ssh/authorized_keys, line 1
    Found matching DSA key: eb:c5:5d:0e:49:19:9d:93:a1:53:7f:bc:25:64:11:0a
    debug1: restore_uid: (unprivileged)
    debug3: mm_answer_keyallowed: key 0x100e2d80 is allowed
    debug3: mm_request_send entering: type 21
    debug3: mm_request_receive entering
    debug3: mm_key_allowed: waiting for MONITOR_ANS_KEYALLOWED
    debug3: mm_request_receive_expect entering: type 21
    debug3: mm_request_receive entering
    debug2: userauth_pubkey: authenticated 0 pkalg ssh-dss
    Postponed publickey for swift from 192.168.0.2 port 39493 ssh2
    debug1: userauth-request for user swift service ssh-connection method publickey
    debug1: attempt 3 failures 2
    debug2: input_userauth_request: try method publickey
    debug3: mm_key_allowed entering
    debug3: mm_request_send entering: type 20
    debug3: monitor_read: checking request 20
    debug3: mm_answer_keyallowed entering
    debug3: mm_answer_keyallowed: key_from_blob: 0x100e2728
    debug1: temporarily_use_uid: 1003/544 (e=18/544)
    debug1: trying public key file /cygdrive/c/swift/.ssh/authorized_keys
    debug1: matching key found: file /cygdrive/c/swift/.ssh/authorized_keys, line 1
    Found matching DSA key: eb:c5:5d:0e:49:19:9d:93:a1:53:7f:bc:25:64:11:0a
    debug1: restore_uid: (unprivileged)
    debug3: mm_answer_keyallowed: key 0x100e2728 is allowed
    debug3: mm_request_send entering: type 21
    debug3: mm_request_receive entering
    debug3: mm_key_allowed: waiting for MONITOR_ANS_KEYALLOWED
    debug3: mm_request_receive_expect entering: type 21
    debug3: mm_request_receive entering
    debug3: mm_key_verify entering
    debug3: mm_request_send entering: type 22
    debug3: mm_key_verify: waiting for MONITOR_ANS_KEYVERIFY
    debug3: mm_request_receive_expect entering: type 23
    debug3: mm_request_receive entering
    debug3: monitor_read: checking request 22
    debug1: ssh_dss_verify: signature correct
    debug3: mm_answer_keyverify: key 0x100e2d50 signature verified
    debug3: mm_request_send entering: type 23
    Accepted publickey for swift from 192.168.0.2 port 39493 ssh2
    debug1: monitor_child_preauth: swift has been authenticated by privileged process
    debug3: mm_get_keystate: Waiting for new keys
    debug3: mm_request_receive_expect entering: type 24
    debug3: mm_request_receive entering
    debug2: userauth_pubkey: authenticated 1 pkalg ssh-dss
    Accepted publickey for swift from 192.168.0.2 port 39493 ssh2
    debug3: mm_send_keystate: Sending new keys: 0x100eb820 0x100eb7d8
    debug3: mm_newkeys_to_blob: converting 0x100eb820
    debug3: mm_newkeys_to_blob: converting 0x100eb7d8
    debug3: mm_send_keystate: New keys have been sent
    debug3: mm_send_keystate: Sending compression state
    debug3: mm_request_send entering: type 24
    debug3: mm_newkeys_from_blob: 0x100e9680(118)
    debug2: mac_init: found hmac-md5
    debug3: mm_get_keystate: Waiting for second key
    debug3: mm_newkeys_from_blob: 0x100e9680(118)
    debug2: mac_init: found hmac-md5
    debug3: mm_get_keystate: Getting compression state
    debug3: mm_get_keystate: Getting Network I/O buffers
    debug3: mm_share_sync: Share sync
    debug3: mm_share_sync: Share sync end
    debug3: mm_send_keystate: Finished sending state
    debug2: set_newkeys: mode 0
    debug2: set_newkeys: mode 1
    debug1: Entering interactive session for SSH2.
    debug2: fd 4 setting O_NONBLOCK
    debug2: fd 5 setting O_NONBLOCK
    debug1: server_init_dispatch_20
    debug1: server_input_channel_open: ctype session rchan 0 win 65536 max 16384
    debug1: input_session_request
    debug1: channel 0: new [server-session]
    debug1: session_new: init
    debug1: session_new: session 0
    debug1: session_open: channel 0
    debug1: session_open: session 0: link with channel 0
    debug1: server_input_channel_open: confirm session
    debug1: server_input_channel_req: channel 0 request pty-req reply 0
    debug1: session_by_channel: session 0 channel 0
    debug1: session_input_channel_req: session 0 req pty-req
    debug1: Allocating pty.
    debug1: session_pty_req: session 0 alloc /dev/tty7
    debug3: tty_parse_modes: SSH2 n_bytes 256
    debug3: tty_parse_modes: ospeed 38400
    debug3: tty_parse_modes: ispeed 38400
    debug3: tty_parse_modes: 1 3
    debug3: tty_parse_modes: 2 28
    debug3: tty_parse_modes: 3 127
    debug3: tty_parse_modes: 4 21
    debug3: tty_parse_modes: 5 4
    debug3: tty_parse_modes: 6 0
    debug3: tty_parse_modes: 7 0
    debug3: tty_parse_modes: 8 17
    debug3: tty_parse_modes: 9 19
    debug3: tty_parse_modes: 10 26
    debug3: tty_parse_modes: 12 18
    debug3: tty_parse_modes: 13 23
    debug3: tty_parse_modes: 14 22
    debug3: tty_parse_modes: 18 15
    debug3: tty_parse_modes: 30 0
    debug3: tty_parse_modes: 31 0
    debug3: tty_parse_modes: 32 0
    debug3: tty_parse_modes: 33 0
    debug3: tty_parse_modes: 34 0
    debug3: tty_parse_modes: 35 0
    debug3: tty_parse_modes: 36 1
    debug3: tty_parse_modes: 37 0
    debug3: tty_parse_modes: 38 1
    debug3: tty_parse_modes: 39 0
    debug3: tty_parse_modes: 40 0
    debug3: tty_parse_modes: 41 0
    debug3: tty_parse_modes: 50 1
    debug3: tty_parse_modes: 51 1
    debug1: Ignoring unsupported tty mode opcode 52 (0x34)
    debug3: tty_parse_modes: 53 1
    debug3: tty_parse_modes: 54 1
    debug3: tty_parse_modes: 55 1
    debug3: tty_parse_modes: 56 0
    debug3: tty_parse_modes: 57 0
    debug3: tty_parse_modes: 58 0
    debug3: tty_parse_modes: 59 1
    debug3: tty_parse_modes: 60 1
    debug3: tty_parse_modes: 61 1
    debug1: Ignoring unsupported tty mode opcode 62 (0x3e)
    debug3: tty_parse_modes: 70 1
    debug3: tty_parse_modes: 71 0
    debug3: tty_parse_modes: 72 1
    debug3: tty_parse_modes: 73 0
    debug3: tty_parse_modes: 74 0
    debug3: tty_parse_modes: 75 0
    debug3: tty_parse_modes: 90 1
    debug3: tty_parse_modes: 91 1
    debug3: tty_parse_modes: 92 0
    debug3: tty_parse_modes: 93 0
    debug1: server_input_channel_req: channel 0 request shell reply 0
    debug1: session_by_channel: session 0 channel 0
    debug1: session_input_channel_req: session 0 req shell
    debug2: fd 3 setting TCP_NODELAY
    debug2: channel 0: rfd 7 isatty
    debug2: fd 7 setting O_NONBLOCK
    debug2: fd 6 setting O_NONBLOCK
    debug1: Received SIGCHLD.
    debug1: session_by_pid: pid 376
    debug1: session_exit_message: session 0 channel 0 pid 376
    debug2: channel 0: request exit-status confirm 0
    debug1: session_exit_message: release channel 0
    debug2: channel 0: write failed
    debug2: channel 0: close_write
    debug2: channel 0: output open -> closed
    debug1: session_close: session 0 pid 376
    debug1: session_pty_cleanup: session 0 release /dev/tty7
    syslogin_perform_logout: logout() returned an error
    debug2: notify_done: reading
    debug2: channel 0: read<=0 rfd 7 len 0
    debug2: channel 0: read failed
    debug2: channel 0: close_read
    debug2: channel 0: input open -> drain
    debug2: channel 0: ibuf empty
    debug2: channel 0: send eof
    debug2: channel 0: input drain -> closed
    debug2: channel 0: send close
    debug3: channel 0: will not send data after close
    debug2: channel 0: rcvd close
    debug3: channel 0: will not send data after close
    debug2: channel 0: is dead
    debug2: channel 0: garbage collecting
    debug1: channel 0: free: server-session, nchannels 1
    debug3: channel 0: status: The following connections are open:
      #0 server-session (t4 r0 i3/0 o3/0 fd -1/-1 cfd -1)
    
    debug3: channel 0: close_fds r -1 w -1 e -1 c -1
    Connection closed by 192.168.0.2
    debug1: do_cleanup
    Closing connection to 192.168.0.2

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list