パスワードを要求せずにSSH経由でsudoコマンドを有効にする方法


13

サーバーAとサーバーB(両方ともUbuntu 10.04 LTS)で異なるタスクを実行しています。サーバーAはサーバーBを突く必要があります。サーバーBはファイルを生成し、完了時にscpをサーバーAに戻します。これはすべて社内にあり、セキュリティの問題についてはあまり心配していません。SSHキー交換は、サーバーAとサーバーBの間ですでに実行されており、正常に機能します。

サーバーBでは、スクリプトgenerateOfflineSigは次のようになります

#!/bin/bash
echo "in script"
sudo apt-offline set offline_package.sig --install-packages "$0"
echo "after sudo"
scp offline_package.sig jeff@servera:/tmp

サーバーBでも、visudoには次のエントリがあります。

jeff ALL=NOPASSWD: ALL

sudo lsサーバーBで実行すると機能します。パスワードは要求されません。

残念ながら、SSHは常にサーバーAでパスワードを要求します。

jeff@servera:~$ ssh -t jeff@serverb /home/jeff/generateOfflineSig "incron"
in script
[sudo] password for jeff:

何か案は?このプロセスは、パスワード入力によって中断することはできません。


/etc/sudoers構文は100%確かではありませんが、私のファイルには行があり# %wheel ALL=(ALL) NOPASSWD: ALLます。たぶんあなたのラインはどうあるべきjeff ALL=(ALL) NOPASSWD: ALLか?
スナップシュー

リモートコマンド全体を引用符で囲む必要はありませんか?
サーバー

実際に...私はスナップシューが何かをしていると思います。少し後で自分の質問に答えます...
ジェフ

回答:


16

/etc/sudoersファイルに「タイプミス」があったようです...

jeff ALL=NOPASSWD: ALL

ファイルの最後にある必要がありました。Ubuntuヘルプでは、ファイルのENDに追加(...)のみが表示されます(最後にない場合は、後のエントリで無効にできます)

その後、ローカルまたはSSH経由で「jeffのsudoコマンド」のパスワードが要求されることはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.