>Number:         149343
>Category:       conf
>Synopsis:       sshd silently switches to RSA in 8.x and 9.x [patch for 
>mergemaster]
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Aug 05 20:00:20 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Mikhail T.
>Release:        FreeBSD 8.1-PRERELEASE amd64
>Organization:
Virtual Estates, Inc. http://sybpipe.com/
>Environment:
FreeBSD aldan.narawntapu 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #0: Mon Jul 5 
00:51:57 EDT 2010 r...@aldan.narawntapu:/meow/obj/var/src/sys/SILVER-SMP amd64
>Description:
Unlike in earlier versions, in 8.x (and 9.x) sshd uses RSA hostkeys instead of 
DSA by default. Buffling as it may be to regular users, according to des: "It 
had to happen. There is nothing to resolve. Move along."

Unsatisfying words, for when an existing installation is upgraded, this point 
is very easy to miss, because the UPDATING-entry on the subject is 2 years old. 
Unfortunately, this may be troublesome to those, who use automated ssh-based
jobs, as those jobs would now hang.  Interactive ssh-connections would prompt 
the user to accept the new (RSA-based) host-keys, as just happened on freefall, 
for example.

For the old behavior (using DSA) to continue, the DSA HostKey must now be 
specified explicitly. This is something, mergemaster can do -- in some cases...

>How-To-Repeat:
Upgrade from 7.x to 8.x. Try to ssh into the upgraded system. Witness the 
warning about new host key (along with warning, that the key of a different 
type is already known for that host).

>Fix:
This patch is the best I can come up with my limited knowledge of mergemaster. 
It does not catch all cases -- such as when the only differences are in 
RCS-tags and the -F is used...


Patch attached with submission follows:

Index: mergemaster.sh
===================================================================
RCS file: /home/ncvs/src/usr.sbin/mergemaster/mergemaster.sh,v
retrieving revision 1.72.2.6
diff -U 2 -r1.72.2.6 mergemaster.sh
--- mergemaster.sh      20 May 2010 22:12:36 -0000      1.72.2.6
+++ mergemaster.sh      5 Aug 2010 18:22:18 -0000
@@ -860,4 +860,53 @@
       DONT_INSTALL=yes
       ;;
+    /etc/ssh/sshd_config)
+       # If some HostKey is already explicitly set, we don't worry
+       if grep ^HostKey "$COMPFILE"
+       then
+               do_install_and_rm "${FILE_MODE}" "${1}" 
"${DESTDIR}${INSTALL_DIR}"
+               return
+       fi
+       fmt << EOWARNING
+***    Note, when upgrading to 8.x. For many years FreeBSD's sshd
+       installations used DSA-keys by default. The 8.x branch reverts
+       to the vendor's behavior of using RSA by default. This may
+       cause connecting clients to stall with the "new host key"
+       warnings. To continue to use DSA, ${1#.} has to explictly
+       set HostKey to point to your DSA-key file.
+
+EOWARNING
+       if [ `egrep -c '^#HostKey\s*.*_dsa_key$' $COMPFILE` != 1 ]
+       then
+               fmt << EOWARNING
+       Unfortunately, the $COMPFILE is more complex then what can be
+       automatically fixed by this script.
+
+EOWARNING
+               do_install_and_rm "${FILE_MODE}" "${1}" 
"${DESTDIR}${INSTALL_DIR}"
+               return
+       fi
+       cat << EOMENU
+       Use 'f' to try to automatically fix ${1#.} before installing
+       Use 'i' to just install it as is.
+        Default is to leave the temporary file to deal with by hand
+
+EOMENU
+       read -p "  How should I handle ${COMPFILE}? [Leave it to install later] 
" \
+               HANDLE_HOST_KEY
+
+        case "$HANDLE_HOST_KEY" in
+       [fF]*)
+               sed -i"" -e 's|#\(HostKey\s*.*_dsa_key.*\)|\1|' $COMPFILE
+               ;;
+       [iI]*)
+               ;;
+       default)
+               echo "   *** ${COMPFILE} will remain for your consideration"
+               return
+               ;;
+       esac
+       do_install_and_rm "${FILE_MODE}" "${1}" "${DESTDIR}${INSTALL_DIR}"
+       return
+       ;;
     /.cshrc | /.profile)
       local st_nlink


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to