Recently after an upgraded from freebsd 14.3 to 14.4 we got not working ssh sever.
When we started the ssh server we got.
The file /usr/libexec/sshd-auth is present in the 14.4 freebsd version, not in the previous versions.
It looks no one on the internet expect this one Chinese person got the same problem.
It looks like we have version mismatch inside the jail.
How did it happen ?
Unlike most jail users, for creating jail we use
And it downloads the newest freebsd version to
But if the files are present, it does not check them and does not download them again, but it expects it is the newest version.
Which may not be true if you used the command while ago.
So you create a jail with version mismatch.
I have fixed my jail create script called jcreate, so now it is checking the version of /usr/freebsd-dist/base.txz .
And offers to clear the cache so the new version is downloaded.
Hope it helps someone.
When we started the ssh server we got.
Starting sshd.
/usr/libexec/sshd-auth does not exist or is not executable
/etc/rc.d/sshd: WARNING: failed to start sshd done.The file /usr/libexec/sshd-auth is present in the 14.4 freebsd version, not in the previous versions.
It looks no one on the internet expect this one Chinese person got the same problem.
[閒聊] FreeBSD 14.4 update p6 sshd 會不見
update 24 Jun 2026 : 今天我升另一台 FreeBSD 14.4 到 p6 就沒問題,看起來有修護? update 27 Jun 2026 : 今天 FreeBSD 14.4 到 p6 又 sshd 消失了 freebsd-update fetch & install 後,版本為 freebsd 14.4 p6
www.ptt.cc
It looks like we have version mismatch inside the jail.
freebsd-version -ru
14.4-RELEASE-p5
14.3-RELEASE
How did it happen ?
Unlike most jail users, for creating jail we use
bsdinstall jail rootfs
And it downloads the newest freebsd version to
/usr/freebsd-dist/base.txz
/usr/freebsd-dist/MANIFES
But if the files are present, it does not check them and does not download them again, but it expects it is the newest version.
Which may not be true if you used the command while ago.
So you create a jail with version mismatch.
I have fixed my jail create script called jcreate, so now it is checking the version of /usr/freebsd-dist/base.txz .
And offers to clear the cache so the new version is downloaded.
Hope it helps someone.
Bash:
#! /bin/sh
jailName="$1"
if [ -z "${jailName}" ];
then
echo " missing jail name "
exit
fi
yesno() {
while :; do
printf "%s [y/n]: " "$1"
read ans
case "$ans" in y|Y) return 0 ;; n|N) return 1 ;; *) echo "y or n only" ;; esac
done
}
mkdir -p /jails/$jailName
if zfs list zroot/jails/$jailName; then
echo " Dataset $jailName already exists !"
exit
else
zfs create -o mountpoint=/jails/$jailName zroot/jails/$jailName
# zfs set recordsize=8K zroot/jails/$jailName
cd /jails/$jailName
echo "In file /usr/freebsd-dist/base.txz is already downloaded version"
echo
tar -xOf /usr/freebsd-dist/base.txz ./bin/freebsd-version | sed -n 's/.*USERLAND_VERSION="\([^"]*\)".*/\1/p'
echo
echo "The newest versions are:"
fetch -qo - https://download.freebsd.org/releases/amd64 | grep -Eo '[0-9]+\.[0-9]+-RELEASE' | sort -Vu
echo
echo "I must always install the newest available version when creating a jail or you get in trouble."
echo "You would get jail with version mismatch as bsdinstall is expecting the newest version"
echo "in the directory /usr/freebsd-dist/ and it does not check it."
echo
if yesno "Should I delete /usr/freebsd-dist/base.txz, so bsdinstall downloads newest version? [y/n]?"; then
rm /usr/freebsd-dist/base.txz
rm /usr/freebsd-dist/MANIFEST
fi
# it creates the directiory rootfs on on its own
bsdinstall jail rootfs
datum=`date "+%Y-%m-%d %H:%M:%S"`
printf "$jailName{\n\$note = \"Created $datum\";\n\$ip = \"192.168.144.XXX/24\";\n}">/jails/$jailName/c.conf
echo "Doing update patches"
freebsd-update -b /jails/$jailName/rootfs fetch
freebsd-update -b /jails/$jailName/rootfs install
echo "Do not forget to change ip adress in /jails/$jailName/c.conf"
echo "Remember to setup firewall."
echo "Install apps for example by \"pkg install screen vim mc\" inside."
fi