私はJSchに精通していません。ただし、root アクセス権がある場合は、sudoers 構成ファイルを更新してこれを回避できます。次の行を /etc/sudoers に追加します
Defaults:USERNAME_HERE !requiretty
他の誰かがこれが悪い考えかどうかについて詳しく説明できるかもしれませんが、それは私の知識の範囲を超えていますが、もっと知りたいですか?
私はこのアプローチを 1 つの特定の状況でのみ使用します。rsync を介してリモート サーバーのクラスターをバックアップする cronjob がありますが、rsync を正常に実行するには、sudo 権限が必要です。
これを回避するために、私は次のことを行いました-
- ユーザー「backupuser」を作成しました-ローカルサーバーとリモートサーバーの両方で
次の 2 行を /etc/sudoers に追加しました - ユーザーに sudo 権限を付与するサーバーでのみ必要です。私たちの場合、リモートサーバー上でのみ。
backupuser ALL = NOPASSWD: /usr/bin/rsync
DEFAULTS:backupuser !requiretty
これらの 2 行を追加すると、rsync コマンドの「backupuser」sudo 権限がユーザーに付与されます。パスワードを入力したり、必要な tty 接続を行ったりする必要はありません。
これがどのように機能するかです-
最初の行は 2 つの部分に分かれています。
USER SPECIFICATION OPTION_TAG (: CONDITIONS(opt))
USER SPECIFICATION - これらのオプションが適用されるユーザーを設定します。
backupuser
OPTION_TAG - 付与するオプションのタグ。この場合、ユーザーにはパスワードを入力しなくても sudo 権限が付与されます。(使用可能なタグのリストについては、man sudoersを参照してください)
ALL = NOPASSWD
条件 - いつ sudo 特権を付与するかについて条件を設定するオプションもあります。この場合、ユーザーには rsync コマンドを実行するための sudo 特権しかありません。
: /usr/bin/rsync
2 行目は、sudo を実行するために端末接続が必要であるという sudo コマンドのデフォルトの要件 (tty 要件) をオーバーライドします。そして、この権限をユーザー アカウント「backupuser」にのみ付与します。(その他のデフォルトについてはman sudoersを参照してください)
DEFAULTS:backupuser !requiretty
これがあなたの質問に答えるのに役立つことを願っています. 私はそれが少し接線をたどったことを知っていますが、完全な説明をしたいと思いました. 詳細については、man sudoをチェックアウトすることもできます