SSH秘密鍵でログインしたときのパスワードなしのsudo


23

SSH秘密鍵をサポートするsudoコマンドを作成して、ユーザーが秘密鍵を使用してログインすると、パスワードを入力せずにsudoを実行できるようにすることは可能ですか?

これにより、ユーザーが常にサーバーにログインするためにセキュアなプライベートSSHキーを使用すると仮定すると、暗号化されたコールドストレージにUNIX sysadminパスワードを保存でき、アクセスする必要がなくなります。


askubuntu.com/a/135838これらのユーザーをグループに入れると、間違いなくできます!
ロブ

sudo visudoパスワードが機能するNOPASSWD: ALLかどうかを確認するためにパスワードを変更してみてください
ニュー

3
@AlanTuringこれは、パスワードを介して識別したそのグループのユーザーにも有効です。
Xyon

@AlanTuringこれにより、サーバーのセキュリティが効果的に低下します
。sudo

特定のユーザーに特権を付与することは可能です。私の答えをご覧ください。
アイザックラビノビッチ

回答:


10

これを行うオプションは、(少なくとも)2014年4月から存在しています。

pam_ssh_agent_auth(Centos 7ですぐに使用可能なYMMV)というパッケージをインストールし、/etc/pam.d/sudoそれを承認方法として受け入れるように構成する必要があります。最後に、のSSH_AUTH_SOCK間に持続する環境変数のリストに追加する必要がある場合がありますsudo

Gentoo wikiにはこれらのステップの詳細があります。


1
素敵な、リアムありがとう。残念なことに、私は何年もの間システム管理者ではありませんでした!
ミッコオタマー

1

これは、sudoとsshdにいくつかの重大なコード変更がなければ不可能です。sudoはログイン方法を知らず、sshは他のプログラムに公開キー、パスワード、またはその他のメカニズムがログインに使用されたかどうかを示すものを公開しません。

他の人が言ったように、sudoersでNOPASSWDオプションを使用できます-これは、秘密鍵でsshを使用するときだけでなく、指定されたユーザーに常に適用されます。

本当に必要な場合は、sshdログをチェックし、sudoersファイルをロック/編集してそのユーザーがパスワードなしのsudoを実行できるようにするsuidプログラムと、この許可を取り消す定期的なタスクでできるトリックがあります。

とはいえ、これは悪い考えだと思います。特権コマンドにパスワードを要求することには、秘密鍵SSHにはない利点がいくつかあります。特に、認証のタイムアウトを許可し(sshセッションの場合はパスワードを再入力する必要があります)、パスワードの最小値とローテーションを許可します(サーバーの制御外のパスフレーズを持つsshキーとは異なります)。


11
「できません」は答えではありません。特にできるとき
アイザックラビノビッチ

答えを新しいinformatinoを含む正しいものに変更します。
ミッコオタマー

1

いくつかの回答は、個別のユーザーパスワードなしでsudoを指します。これにより、セキュリティが低下することに注意する必要があります。

すでに証明書で強力に認証されているユーザーの場合、理論的にはルートにすることができる証明書を所有しているため、これは問題になりません。

ただし、攻撃者に制限付きのユーザーシェルを提供し、このユーザーのsudoersファイルにNOPASSWDが設定されている脆弱性について考える場合、攻撃者はシステムへの資格情報をまったく持たないrootです。

sudoがユーザーからのパスワードを必要とする場合、攻撃者は自分の特権をrootに昇格させるのに時間と運が必要です。

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