The issue is the connector will return a 400 for temporary conditions, like server being to busy. It should return a status code, like 429 when busy, so it will try again.
The error I get in production many times is:
"Server response does not contain SSH protocol identification."
The error message is kind of misleading. This occurs when the server is too busy. The SFTP connector is returning a status code of 400 when it should be 429. I've seen this happen on many different servers, every time when there are many connectors to the server. With heavy workloads, I could have dozens of connections occurring at the same time and one will fail but the rest will go through. The failed condition should retry, but it won't because the wrong status code is returned by the connector.
This occurs no matter what action I use. I've seen this occur with create file, delete file and get file contents. This makes the connector useless when handling large jobs.
If it returned 429 instead of 400, I wouldn't have to add more logic to dozens of Logic Apps to deal with busy servers.