結論

IAMの信頼関係が間違っている可能性が高いです。

IAMでAWS Transfer for SFTP 用に作ったRoleを確認して信頼されたエンティティがtransfer.amazonaws.comになっていることを確認しましょう。

EC2でRoleとか作ってしまうとここが違うので権限が割りてられなくてConnection Closedになります。

気づいた経緯

SGとか?

Publicで作っていれば、外部からアクセスできる。SGの設定はない。
(VPCの場合どうなるのかよくわかってないです)

社内のセキュリティツールが悪さをしている?

EC2インスタンスを立ててそこからsftpしてみたらConnection closedなので関係ない

SSH鍵がおかしい?

 sftp -v -i ~/.ssh/id_rsa sftp-user@sftp-server

でセッションを追ってみたところ、

debug1: Authentication succeeded (publickey).

という記述があるので認証は成功している。
その後

Transferred: sent 2900, received 2924 bytes, in 2.3 seconds
Bytes per second: sent 1282.7, received 1293.3
debug1: Exit status 1
Connection closed

で異常終了しているので、ログイン後のAWSへのアクセスで問題がありそう。

IAMの権限がたりない?

Admin権限にしてみたが、やはりConnectionclosed

AWS Transfer for SFTP のログ

ログ自体が存在しない。。。
あれ?もしかしてまったくIAMの権限が渡ってない? 
あ、もしかして、AWS Transfer for SFTP 用のサービスって存在する? した、、、すいません、、、EC2で作ってました、という落ちでした。我ながら恥ずかしい。

最後に

AWS Transfer for SFTP の良い略称知っている人がいれば教えて下さい。

元記事はこちら

AWS Transfer for SFTP で作ったエンドポイントにsftp すると Connection closedとなる