0

プロジェクトで SFTP を使用して、SSH 接続を介してファイルを転送します。これは、Java コードを介して行われます。?, ! のような文字の場合 sftp コマンドでエンコードされた値を指定する必要があるなど、コードでパスワードをエンコードし、コマンドを生成しました。しかし、SFTP は現在、これらのエンコードされたパスワードを処理しておらず、パスワードを直接受け入れます。何が問題になる可能性がありますか。助けてください。

ユーザー名の例: xyz パスワード: abc!

URLEncoder を使用して、ユーザー名とパスワードをエンコードします。

String username= URLEncoder.encode(username, "UTF-8"); 文字列 password = URLEncoder.encode(password, "UTF-8");

エンコード後、コードは SFTP コマンドを次のように生成します: sftp://xyz:abc%21@10.9.10.9/home/documents/xyz.txt

しかし、これは機能していません。認証は間違ったパスワードで失敗します。手動でコマンド sftp://xyz:abc!@10.9.10.9/home/documents/xyz.txt を指定すると、機能します。

間違っている場合はお知らせください。

前もって感謝します。

4

1 に答える 1

0

それは実際には問題ではありません。SFTP は SSH のサブシステムであり、SSH はクライアント接続時に安全なチャネルを作成します (SSL が行うことと同様ですが、レイヤー 7 で): 安全で暗号化された接続が確立されると、ユーザー名とパスワードがそのような内部の SSH サーバーに送信されます。したがって、それらをエンコードしたり暗号化したりする必要はありません。

SSH サーバーは、前処理もエンコードもされていない、ユーザー名/パスワードをそのまま受け取ることを想定しています。そして、上記で説明した理由により、SFTP を使用して安全に行うことができます。だから心配する必要はありません。

于 2014-10-12T16:30:42.357 に答える