.ssh/authorized_keysを設定し、pub/privateキーを使用して新しい「ユーザー」でログインできます...また、sudoersリストに「ユーザー」を追加しました...現在の問題は、私はSudoコマンドを実行しようとします。
$ Sudo cd /root
入力したパスワードの入力を求められますが、機能しません(設定した秘密鍵のパスワードを使用しています)
また、私は使用してユーザーのパスワードを無効にしました
$ passwd -l user
何が欠けていますか?
どこかで私の最初の発言が誤解されています...
私はシステムを強化しようとしています...最終的な目標は、単純なパスワード認証ではなく、pub/privateキーを使用してログインすることです。私はauthorized_keysファイルを介してそれらすべてを設定する方法を理解しました。
さらに、ルートアカウントを介したサーバーログインを最終的に防止します。しかしその前に、2番目のユーザー(常にシステムにログインするユーザー)のためにSudoを動作させる必要があります。
この2番目のユーザーについては、 "passwd -l user ...を介してユーザーをロックしない場合、通常のパスワードログインを禁止し、pub/private keyログインのみを強制したいのですが、キーを使用しない場合でも、通常のパスワードでサーバーに入ります。
しかし、もっと重要私は、Sudoに、パスワードが無効になっているユーザーとのpub/private keyセットアップを機能させる必要があります。
編集: OK、わかったと思います(解決策):
1)/ etc/ssh/sshd_configを調整してPasswordAuthentication no
を設定しました。これにより、sshパスワードのログインができなくなります(これを実行する前に、公開/秘密鍵が機能していることを確認してください)
2)sudoersリストvisudo
を調整して追加しました
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3)rootはパスワードを持つ唯一のユーザーアカウントです。パスワードが設定されていない2つのユーザーアカウント "dimas"と "sherry"でテストしています(パスワードは空白、passwd -d user
)
上記は本質的に誰もがパスワードでシステムにログインすることを防ぎます(公開/秘密鍵を設定する必要があります)。
さらに、sudoersリストのユーザーには管理機能があります。また、別のアカウントにsu
することもできます。したがって、基本的に「dimas」はSudo su sherry
を実行できますが、「dimasはsu sherry
を実行できません。同様に、sudoersリストにないユーザーはsu user
またはSudo su user
を実行できません。
[〜#〜] note [〜#〜]上記は機能しますが、セキュリティが不十分と見なされます。 「dimas」または「sherry」ユーザーとしてコードにアクセスできるすべてのスクリプトは、Sudoを実行してrootアクセスを取得できます。設定に関係なくリモートユーザーがログインできるようにするsshのバグ、Firefoxなどでのリモートコード実行、またはユーザーとして不要なコードを実行できるようにするその他の欠陥が、rootとして実行できるようになりました。 Sudoは常にパスワードを要求する必要があります。そうしないと、他のユーザーの代わりにrootとしてログインすることもできます。
ssh
とSudo
は、互いに何の関係もありません。 ssh
認証方法を設定しても、Sudo
に対して何も実行されません。 Sudo
はssh
パスワードを理解しません。
passwd -l
は、ユーザーのアカウントをロックすることを目的としているため、ユーザーはパスワードで認証できなくなります。これは、ユーザーがパスワードなしで認証できるようにすることとは正反対です。
あなたが欲しいのは your NOPASSWD
file のsudoers
オプションだと思います。
(PS、cd
コマンドをSudo
で実行する理由はありません。cd
は親プロセスに伝達されないため、Sudo
が終了するとすぐに、元の場所に戻ります)。
編集:アカウントのパスワードをロックし、Sudoに公開鍵/秘密鍵を認識させたいと言い続けます。 Sudoはsshキーを使用しません。 sshではありません。ユーザーが自分のパスワードでログインできないようにしたい場合、答えは sshパスワード認証を無効にする であり、アカウントをロックしないことです。次に、ユーザーが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
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で正確に動作し、他のバージョン/ディストリビューションを使用する際の出発点として役立ちます。