接続を開始しているので、拒否されるためには、接続しようとしているマシンがあなたにsshアクセスを拒否していることを意味します。
あなたが持っている方法でマシンにログインし、sshサーバが動作していることを確認します。そうであれば、ファイアウォールがポート22をブロックしていないことを確認します。なぜなら、時々sshサーバが動作しているが、ポート遮断ルールのためにファイアウォールがsshサーバへのネットワークアクセスを許可しないからです。コメントで質問後に編集
--- ---
Is there a difference between ssh in the command line and using exec? Because I can
connect to the server through the command line, which I assume is still using port 22.
So if I can ssh that way does that mean port 22 is working?
いくつかの可能性があります。 Javaには、マシンリソースへのプログラムアクセスを拒否するSecurity Managerが付属しています。セキュリティマネージャがハードドライブにアクセスする権限を拒否したり、他のマシンとの接続を確立したりするため、リモートサーバーからダウンロードされたアプレットコードを安全に実行することができます。アプレットサンドボックスでは、元のWebサーバーに接続を戻して(コードとイメージをさらにダウンロードする)ことができます。
しかし、セキュリティの例外がないと、疑惑がセキュリティマネージャから離れてしまいます。メッセージに「接続が拒否されました」という単語が使用されているということは、接続先のSSHサーバーが接続を受け入れないことを示す強力な指標です。
おそらく、コマンドラインで操作すると、ssh
コマンドが異なる環境または構成を使用している可能性があります。私はコマンドにエイリアスが付いているかどうか、ssh接続がキーペアについて何らかの仮定をしているかどうかを確認します。コマンドとの間に何もないと思われる場合は、あなたのプログラムがsshバージョン2との接続であることを確認します(バージョン1はセキュリティホールのために多くの人が許可していません)。
次に、名前解決の可能性のある違いについても調べてみましょう。コマンド行でホスト名を解決するのは、Javaプログラムからホスト名を解決する場合とは異なる場合があります。これは、Javaプログラムが安全なシェルサーバーを実行していない別のマシンに接続しようとしていることを意味します。
いずれにしても、本当のコーディング上の問題か環境問題かを特定するために、デバッグを少し行う必要があるようです。
@をスカップしてみましたか? Runtime.execでコマンドを実行することは、シェルから実行することとまったく同じではありません – woliveirajr
"sudo mk ..."の後に接続して、結果を投稿することもできます – woliveirajr
run1 a StringまたはString []? – woliveirajr