SSHで「sudo」を実行する


8

多数のリモートマシンにログオンしてコマンドを実行するスクリプトを書いています。スクリプトを実行するユーザーが各マシンのパスワードを入力する必要がなく、スクリプトの最初にパスフレーズを入力するだけでよいように、キーを設定しました。

問題は、リモートマシンのコマンドsudoを実行する必要があることです。同時に、スクリプトの目的は、ユーザーがパスワードを何度も入力する必要をなくすことです。のパスワードを入力しないようにする方法はありますsudoか?リモートマシンでコマンドの権限を変更することはできません。

回答:


8

sudoの場合、ユーザーにパスワードを要求せずにsudoを実行することを許可できますman sudoers。コマンドを/etc/sudoers発行してファイルを編集できますvisudo。それ以外の場合、ファイルは正しく再ロードされないため、これは特別なものでなければなりません。結果の行(ここではファイル自体の例から取得)は次のようになります。

## Allows people in group wheel to run all commands
# %wheel    ALL=(ALL)   ALL

## Same thing without a password
%wheel  ALL=(ALL)   NOPASSWD: ALL

ありがとうございました。あなたの答えを投稿する直前に、私の同僚がこれと同じ行で解決策を提案したので、それは面白いです。編集するファイルを追加し、それを実行して編集/etc/sudoersすることもできますかsudo /usr/sbin/visudo
vahidg

8
実行したいコマンドがわかっている場合は、すべてのコマンドを指定したくない場合があります。セキュリティホールの一部です。
トム・オコナー

3
@Tom O'Connor:はい、必要なコマンドのみを提供しました。完全を期すために、ここでの例を配置します:%wesho ALL=NOPASSWD: /sbin/service httpd
vahidg

ああ、十分に公平です。:)
トム・オコナー

7

@Wesho、

DaDaDomが言ったことを実行できます(機能し、簡単です)。または、pam-ssh-agent-authと呼ばれるPAMモジュールを使用して、セットアップを強化したい場合があります。

Debian / Ubuntuシステムのプロセスはかなり単純です。

$ sudo aptitude install libssl-dev libpam0g-dev build-essential checkinstall
$ wget "http://downloads.sourceforge.net/project/pamsshagentauth/pam_ssh_agent_auth/v0.9.3/pam_ssh_agent_auth-0.9.3.tar.bz2"
$ tar -xjvf pam_ssh_agent_auth-0.9.3.tar.bz2
$ cd pam_ssh_agent_auth-0.9.3

$ ./configure --libexecdir=/lib/security --with-mantype=man

$ make
$ sudo checkinstall

sudo構成を編集します。

$ sudo visudo

以下を追加します。

Defaults env_keep += SSH_AUTH_SOCK

sudo PAM設定を変更して続行します。

$ sudo vi /etc/pam.d/sudo

既存の2つの@include行のすぐ上にauth行を追加します。

auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
@include common-auth
@include common-account

ほら!

認証なしのsudoですが、sudo構成からパスワードを単に削除するのではなく、SSHエージェントを使用して強力な認証を実行します。



1
authorized_keysrootだけが変更できるようにロックダウンする必要があります。そうしないと、パスワードを無効にすることもできます。
ijk


2

Andre de Mirandaの答えはpam_ssh_agent_authを使用した優れたソリューションを提供しますが、一部が古くなっています。特に、/etc/pam.d/sudo現在の多くのLinuxバージョンを使用する場合の手順。

Ubuntu 12.04を正確に実行している場合、私は実際にプロセスを単純化しました。ppaからpam_ssh_agent_authビルドを提供することです:ppa:cpick / pam-ssh-agent-auth

次のコマンドを実行して、パッケージをインストールできます。

sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
sudo apt-get install pam-ssh-agent-auth

インストール後、このPAMモジュールをsudoで使用する場合は、sudoの設定とPAM構成を構成する必要があります。Ubuntu12.04では、次の2つのファイルを作成することで正確に行うことができます。

/etc/sudoers.d/pam-ssh-agent-auth:

Defaults    env_keep+="SSH_AUTH_SOCK"

/etc/pam.d/sudo:

ent#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
@include common-auth
@include common-account
@include common-session-noninteractive

chefを使用している場合、上記のプロセスは、次の2つの場所のいずれかにある私のクックブックで自動化できます
。https : //github.com/cpick/pam-ssh-agent-auth
http://community.opscode .com / cookbooks / pam-ssh-agent-auth

クックブックのfilesディレクトリには、Ubuntu 12.04で正確に動作する上記のファイル/etc/pam.d/sudo/etc/sudoers.d/pam-ssh-agent-authファイルが含まれており、他のバージョン/ディストリビューションを使用する際の出発点として役立ちます。

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