Index: etc/rc.d/sshd
===================================================================
--- etc/rc.d/sshd (revision 228148)
+++ etc/rc.d/sshd (working copy)
@@ -84,11 +84,30 @@ sshd_keygen()
else
/usr/bin/ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
fi
+ for i in "ssh_host_key" "ssh_host_key.pub" "ssh_host_dsa_key" "ssh_host_dsa_key.pub" "ssh_host_ecdsa_key" "ssh_host_ecdsa_key.pub" "ssh_host_rsa_key" "ssh_host_rsa_key.pub"
+ do
+ if [ -f /etc/ssh/${i} ] ; then
+ _tmp=`cat /etc/ssh/${i} | /usr/local/bin/base64`
+ column=`echo ${i} | tr "." "_"`
+ cmd="UPDATE services_ssh SET '${column}' = '${_tmp}' WHERE id = (SELECT id FROM services_ssh ORDER BY id LIMIT 1);"
+ echo ${cmd} | ${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG}
+ fi
+ done
)
}
sshd_precmd()
{
+ for i in "ssh_host_key" "ssh_host_key.pub" "ssh_host_dsa_key" "ssh_host_dsa_key.pub" "ssh_host_ecdsa_key" "ssh_host_ecdsa_key.pub" "ssh_host_rsa_key" "ssh_host_rsa_key.pub"
+ do
+ column=`echo ${i} | tr "." "_"`
+ _tmp=`${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG} "SELECT ${column} from services_ssh"`
+ _tmpx=`echo ${_tmp} | tr '\n' '1'`
+ if ! [ "${_tmpx}" = "1" ] ; then
+ echo ${_tmp} | /usr/local/bin/base64 -d > /etc/ssh/${i}
+ fi
+ done
+ chmod 600 /etc/ssh/ssh_host_key /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_rsa_key 2>/dev/null
if [ ! -f /etc/ssh/ssh_host_key -o \
! -f /etc/ssh/ssh_host_dsa_key -o \
! -f /etc/ssh/ssh_host_ecdsa_key -o \