nc fails to connect the first time and then succeeds

Jack Adrian Zappa
Tue Apr 21 07:48:45 GMT 2020

I was trying to do some testing of a ssh port forwarding issue I was
having, by trying to reduce the problem into something simpler.  So I
reached for netcat (nc).  Turns out that when trying to connect a
listener to a sender directly, it will fail first and then succeed.

In terminal 1 we do:

$ nc -l 1234

nc waits.  In terminal 2 we do:

$ nc -v localhost 1234
nc: connect to localhost port 1234 (tcp) failed: Connection refused
Connection to localhost 1234 port [tcp/*] succeeded!

The initial failure is fine when connecting directly, but this failure
is disastrous when connecting through an ssh connection.  This is
because when the sshd connects to the nc listener, it will first fail
and then succeed.  However, that first failure makes the sshd think
that there is no connection to be had and just closes the tunnel,
making the nc sender just terminate.

Is this a coding error or somehow by design?  If by design, then why?
If by error, then when can we expect this to be fixed?



More information about the Cygwin mailing list