多数のリモートマシンにログオンしてコマンドを実行するスクリプトを作成しています。スクリプトを実行しているユーザーが各マシンのパスワードを入力する必要がなく、スクリプトの最初にパスフレーズを入力するだけで済むように、キーを設定しました。
問題は、リモートマシンでのコマンドの実行にSudo
が必要なことです。同時に、スクリプトの要点は、ユーザーがパスワードを複数回入力する必要がないようにすることです。 Sudo
のパスワードを入力しないようにする方法はありますか?リモートマシンでコマンドの権限を変更することはできません。
Sudoの場合、ユーザーがパスワードを要求せずにSudoを実行できるようにするには、man sudoers
を試してください。 visudo
コマンドを発行すると、ファイル/etc/sudoers
を編集できます。そうしないと、ファイルが正しく再ロードされないため、特別なものにする必要があります。結果の行(ここではファイル自体の例から取得)は次のようになります。
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
@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
SudoPAM設定を変更して続行します。
$ Sudo vi /etc/pam.d/Sudo
auth行を既存の2つの@ include行のすぐ上に追加します。
auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
@include common-auth
@include common-account
Voilà!
認証なしのSudoですが、Sudo構成からパスワードを削除するだけでなく、SSHエージェントに依存して強力な認証を実行します。
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
ディレクトリには/etc/pam.d/Sudo
および/etc/sudoers.d/pam-ssh-agent-auth
Ubuntu 12.04で正確に動作する上記のファイルは、他のバージョン/ディストリビューションを使用する際の出発点として役立ちます。