bin/134694: gives false-positive when unable to obtain socket [WAS: sshd(8) - alert user when fails to execute from rc.d]

Glen Barber glen.j.barber at gmail.com
Wed May 20 14:41:01 UTC 2009


Hi, Dimitry

On Wed, May 20, 2009 at 7:27 AM, Dimitry Andric <dimitry at andric.com> wrote:
> On 2009-05-20 13:18, Tobias Fendin wrote:
>> Does the child really die? I did a little test:
>>
>> # /etc/rc.d/sshd status
>> sshd is not running.
>> # nc -l 22 >/tmp/ssh_test &
>> [1] 1733
>> # /etc/rc.d/sshd start
>> Starting sshd.
>> # /etc/rc.d/sshd status
>> sshd is running as pid 1740.
>
> This is because sshd binds to both IPv4 and IPv6 ports.  The IPv4 bind
> fails, as you will see in syslog, while the IPv6 bind succeeds.  Thus
> sshd keeps on running.
>
> If you start two nc's (I don't know any way to do this with one
> instance), e.g.:
>
> nc -4 -l 22 > /tmp/ssh_test4 &
> nc -6 -l 22 > /tmp/ssh_test6 &
>
> and then try starting sshd, you should see it quit.
>

It's not an IPv4 versus IPv6 problem.  How I tested this, as I had
this problem in the past (which was a non-standard setup, but still a
problem):

sshd was listening on :25, both IPv4 and IPv6
sendmail was listening on :25 (because I had forgotten to disable it)

The system boots, and sendmail starts before sshd.  When sshd starts
(or tries to) there is no console output that it had failed.  The only
way you realize it is not running, is when you cannot remotely log in.

-- 
Glen Barber


More information about the freebsd-hackers mailing list