1

わかりましたので、ここに私の問題があります。

私はローカルワークステーションで作業しています。ファイアウォールの背後にマシンがあり、Java コードからこのマシンにログインする必要があります。これを行うには、JSch ライブラリを使用したいと思います。このマシンの IP アドレスを Web ブラウザに入力すると、ファイアウォールのログイン ページにリダイレクトされます。資格情報を入力すると、次のコードを使用して ssh でこのマシンにログインできます。

public void authenticate(String ip, String user, String password) {
    JSch jsch=new JSch();
    try {
        Session session = jsch.getSession(user, ip, 22);
        session.setPassword(password);
        session.setUserInfo(new UserInfoImpl(password));
        session.connect();
        System.out.println("Yes!!");
        session.disconnect();
    } catch (JSchException e) {
        e.printStackTrace();
    }
}

private class UserInfoImpl implements UserInfo{

    private String password;
    public UserInfoImpl(String password){
        this.password = password;
    }

    @Override
    public String getPassphrase() { return null;}
    @Override
    public String getPassword() {return password;}
    @Override
    public boolean promptPassphrase(String arg0) {return true;}
    @Override
    public boolean promptPassword(String arg0) {return true;}
    @Override
    public boolean promptYesNo(String arg0) {return true;}
    @Override
    public void showMessage(String arg0) {}

}

しかし、私のプログラムはファイアウォールにも自動的にログインするはずです。Windows コマンド ラインから ssh (ポート 22) の代わりに telnet (ポート 23) を使用すると、そこからこのファイアウォールにログインできる可能性があります。

Java コードから (JSch または他の Java ライブラリを使用して) このファイアウォールにログインすることは可能ですか?

4

2 に答える 2

2

ポート 22 にやみくもに接続しても、おそらくファイアウォールの Web ページにリダイレクトされないため、JSch はそれを処理しません。接続すると、例外が発生します。これをキャッチすると、通常の http コール ポート 80 でファイアウォール リダイレクトをトリガーし、リダイレクトを取得して結果を解析し、適切なフォーム データを含む HTTP POST を送信できます。

ファイアウォールのフォームとアドレスが常に同じである場合は、SSH に接続する前に直接 POST を送信できます。

そのために標準クラスを使用できます 。Java - POST メソッドを介して HTTP パラメーターを簡単に送信するを参照してください。

于 2013-03-20T14:15:09.437 に答える
0

プロキシにログインすると、リモート マシンのポート 22 にアクセスできることはかなり驚くべきことですが、とにかく...

JSch は役に立ちませんが、正しいプロキシ認証メカニズムを処理できる HTTP クライアントを使用して、Java で Web ブラウザーが行うことを簡単にシミュレートできます。

Java 6 以降、提供された URLConnection は (SOCKS および HTTP プロキシに加えて) NTLM を処理できます。とにかく、問題のデバッグに役立つより多くのオプションと柔軟性を提供するHttpClient 4.2.x を使用することをお勧めします。

于 2013-03-20T14:19:44.680 に答える