actually setting Timeout to 5 seconds does not mean 5 seconds from the start of the method. There is an internal counter for each socket operation. If Rebex component retrieves no response from the server within a specified time limit (5 seconds in your case), then the Timeout is triggered. That does not mean that there might be more sucessful operations before in the Connect method which would result in the Connect method failing after 20-30seconds.
Could you please create a log of the communication with the code below:
var sftpClient = new Sftp();
sftpClient.LogWriter = new FileLogWriter(@"C:\log.txt");
sftpClient.Timeout = 5000;
and either post it here or send to email@example.com so that we can check on that?