sshを使用してリモートホスト上で操作を実行する必要のあるWebサーバー(jetty)があります。サーバーはルートとして実行され、私はそれをそのままにしておきたい。Javaで別のユーザーとしてssh接続を実行
webServerマシンでは、rootとしてsudo -su user ssh [email protected]
を実行できます。このコマンドは、 "user"をユーザとして使用してsshServerへのsshセッションを開きます。これは、ユーザーのssh-keysファイルを使用してsshセッションを開始し、パスワードを必要としないという点で良い点です。
Javaでこの操作を模倣したいと思います。私はいくつかのsshライブラリを使ってみましたが、動作させることができませんでした。別のユーザーとして接続しようとすると、ユーザーのパスワードを入力する必要があります。つまり、sshServerに「ユーザー」としてログオンするようJavaに依頼できますが、ssh接続コマンドを「ユーザー」として実行するようにJavaに依頼することはできません。私はキーファイルはssh-connection-commandを "user"として実行するときにのみ使用されると信じています。
ユーザーはsshServerにログオンするための私の指定ユーザーです。 root自身はsshキーファイルを持っておらず、sshServerにログオンできるのは登録ユーザーではありません。私は、コードやその他の難読化方法でユーザーのパスワードを保存しないようにしたいと思います。私はパスワードが何らかの危険にさらされる可能性のある他のユーザーを作成することもできません。
誰かがこの操作を実行するためのライブラリを知っていれば、私は感謝しています。
あなたがしようとしましたJSCH? –
確かに、それは私が現在使っているものです。それを動作させる方法がわかっている場合、簡単な例を教えてください。ありがとう! – soundwave
大きなセキュリティホールを作成しているような感じです。私はあなたのマシン上のユーザーになりたくありません。つまり、javaには「su」/「sudo」機能はありませんが、セキュリティを気にせず、ユーザーが自分の秘密鍵をパスフレーズで保護していない場合は、あなたがJavaをrootとして実行しているので、ユーザ(あなたのライブラリをあなたの秘密鍵ファイルにコピーするかコピーするか)あなたはコードを表示していないので、あなたのケースでそれを行う方法を伝えるのは難しいです。 –