GNU/Linux >> Linux の 問題 >  >> Linux

共有キー .ssh/authorized_keys と sudo を連携させるには?

やりたいことは可能ですが、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 で正確に動作し、他のバージョン/ディストリビューションを使用する際の出発点として役立ちます。


Linux
  1. SSHキーを設定する方法

  2. WordPressパーマリンクをNginxで機能させる方法

  3. sudoの内部はどのように機能しますか?

  1. Sftpで共有ディレクトリにアクセスできるようにする方法は?

  2. Ssh – Tcp-keepaliveはSshでどのように機能しますか?

  3. Ubuntu18.04でSSHキーを設定する方法

  1. SVNパッチを作成して適用するには?

  2. 暗号化されたホームディレクトリを持つUbuntuシステムへのauthorized_keysを使用したSSH?

  3. ssh キー ssh-agent bash および ssh-add