私はPuttyを使用してSSHを介してさまざまなLinuxシステム(主にCentOSとUbuntu)にログインします。 SSH 鍵認証を使用し、鍵は Keepass 2.x に保存され、それを介して Putty に渡されます。基本エージェントプラグイン(基本的に美人コンテストに代わるもの)。これまではうまくいきます。
ただし、ログイン後にパスワードを入力する必要がありますsudo
。回避策がありますか?それでは、sudoはSSHキーを介してログインするときにパスワードを要求しませんか?
6年前にも同様の質問がありました。sudo:SSHキーを使用してログインするときにパスワードを要求しないでください。 。与えられた答えは実際の答えではありませんが、SSHキーを使用してログインし、rootとして直接ログインする解決策です。これをしないにはいくつかの理由があります。
答え1
SSHプロキシ転送が利用可能な場合、実際には他の方法があります。pam_ssh_agent_auth.so
(出典はこちら)あなたの要件を満たすPAMモジュールです。 Debian、Ubuntu、libpam-ssh-agent-auth
およびCentOSパッケージでパッケージとして使用できますpam_ssh_agent_auth
。
# Debian/Ubuntu:
apt update; apt install libpam-ssh-agent-auth
# CentoOS
yum install pam_ssh_agent_auth
セキュリティに関する考慮事項
開発者が述べたように、SSHプロキシ配信を使用するリスクを評価する必要があります。
もちろん、いくつかの注意事項があります。 ssh-agent配信にはセキュリティ上のリスクがあるため、環境に応じて慎重に検討する必要があります。信頼できない中間サーバーがなく、特権コマンド呼び出しに必要なトレーサビリティ、責任、および認証を維持する場合は、利点がリスクよりも大きくなければなりません。
KeeAgentにオプションがあることを確認する場合クライアントプログラムがキーの使用を要求するときは、常に確認が必要です。一度設定すると、リモートホストにrootアクセス権を持つ他の人から保護レベルを提供することもできます。明らかな理由なくSSHキー要求の確認ダイアログボックスが表示された場合、誰かがSSHプロキシを乱用しようとしていることがわかります。接続。
席NOPASSWD
を空にするときは、KeePassおよび/またはワークステーション画面を常にロックしてください。また、SSHキーを使用してログインを許可し、ルートファイルにrootとしてログインできるすべての人を追加するsudoers
よりも優れています。 sudoのメリットをそのまま維持するからです。root
authorized_keys
使用法
auth
これを使用するには、デフォルトで次の最初の行に追加します/etc/pam.d/sudo
。
auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
簡単なsedコマンドでこれを行うことができます(最初の行がコメントなので、2行目に追加してください)。
sed -i '2 i\auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys' /etc/pam.d/sudo
sudo
次に、/etc/security/authorized_keys
一般的な1行のOpenSSH互換形式でSSH認証を使用することを許可されている必要があるユーザーの公開SSHキーを追加します。
SSH_AUTH_SOCK
次に、sudoersファイルを編集して環境変数を保存するようにsudoersを設定しますvisudo
。この行を別の行があるセクションに追加してくださいDefaults
。
Defaults env_keep += "SSH_AUTH_SOCK"
次に、SSHクライアントがプロキシ転送を許可していることを確認する必要があります。 PuTTYでは、以下を確認する必要があります。
-A
コマンドラインSSHを使用している場合は、次のパラメータを指定する必要があります。
ssh -A [email protected]
テスト中にを使用してsudoセッションを終了することを忘れないでくださいsudo -k
。