やりたいことは可能ですが、pam-ssh-agent-auth という PAM モジュールをコンパイルする必要があるため、ある程度の経験が必要です。 .
プロセスはかなり単純です:
$ 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
追加 (@include 行のすぐ上):
**auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys**
@include common-auth
@include common-account
ssh
そして sudo
お互いに何の関係もありません。 ssh
の設定 認証方法は sudo
に対して何もしません . sudo
ssh
を理解できない パスワード。
passwd -l
ユーザーのアカウントをロックして、パスワードで認証できないようにすることを目的としています。これは、ユーザーがパスワードなしで認証できるようにするという目的とは正反対です。
あなたが望むのは NOPASSWD
だと思います sudoers
のオプション ファイル。
(追伸、cd
を実行する理由はありません sudo
のコマンド . cd
親プロセスに伝播しないため、sudo
終了すると、元の場所に戻ります。)
編集: アカウントのパスワードをロックし、sudo に公開鍵と秘密鍵を理解させたいと言い続けます。申し訳ありませんが、sudo は ssh キーを使用しません。それはsshではありません。ユーザーがパスワードでログインできないようにする場合は、アカウントをロックするのではなく、ssh パスワード認証を無効にするのが解決策だと思います。その後、ユーザーのパスワードを保持できます。ユーザーは、ssh のauthorized_keys 経由でログインした後に sudo に使用できます。
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 構成を構成する必要があります。正確には、Ubuntu 12.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
シェフを使用している場合、上記のプロセスは、次の 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 で正確に動作し、他のバージョン/ディストリビューションを使用する際の出発点として役立ちます。