Package: sshpass
Version: 1.05
When remote key changes, sshpass hangs. This patch fixes the problem. It
seems the bug forum on Sourceforge for the upstream has been inactive for a
long time, I file the bug here. Hope someone can fix this.
This is another scenario which is similar to #506208, but not the same
thing.
Best Regards,
Yongzhi Pan
diff --git a/main.c b/main.c
index 652d4f8..31894f2 100644
--- a/main.c
+++ b/main.c
@@ -358,9 +358,10 @@ int handleoutput( int fd )
{
// We are looking for the string
static int prevmatch=0; // If the "password" prompt is repeated, we have the wrong password.
- static int state1, state2;
+ static int state1, state2, state3;
static const char compare1[]="assword:"; // Asking for a password
static const char compare2[]="The authenticity of host "; // Asks to authenticate host
+ static const char compare3[] = "Warning: the RSA host key for"; // Key changes
// static const char compare3[]="WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"; // Warns about man in the middle attack
// The remote identification changed error is sent to stderr, not the tty, so we do not handle it.
// This is not a problem, as ssh exists immediately in such a case
@@ -389,6 +390,12 @@ int handleoutput( int fd )
// Are we being prompted to authenticate the host?
if( compare2[state2]=='\0' ) {
ret=RETURN_HOST_KEY_UNKNOWN;
+ } else {
+ state3 = match( compare3, buffer, numread, state3 );
+ // Host key changed
+ if ( compare3[state3]=='\0' ) {
+ ret=RETURN_HOST_KEY_CHANGED;
+ }
}
}
diff --git a/sshpass.1 b/sshpass.1
index f6f1e26..e005c33 100644
--- a/sshpass.1
+++ b/sshpass.1
@@ -76,6 +76,9 @@ Invalid/incorrect password
.TP
6
Host public key is unknown. sshpass exits without confirming the new key.
+.TP
+7
+Host public key changed. sshpass exits without confirming the new key.
.P
In addition, ssh might be complaining about a man in the middle attack. This
complaint does not go to the tty. In other words, even with sshpass, the error