非ユーザーシェルからssh-agentセッションに自動的にログインする

非ユーザーシェルからssh-agentセッションに自動的にログインする

管理できない理由で、チームは一部のシステムの非ユーザーシェルを介してユーザーアカウントを共有します。どちらもパスワードで保護された秘密鍵を共有ユーザーの〜/ .sshディレクトリに移動しました。通常、ログインしてssh-agentセッションを開き、次のようにssh-addパスワードで鍵を保護します。私たちの誰もがこのワークフローを気に入らず、それをより簡単にするよう努めています。

共有ユーザーのシェルを開くと自動的にパスワードの入力を求める方法はありますか?

sudo -u shared /bin/bash
# new shell opens
eval `ssh-agent -s`
ssh-add ~/.ssh/my_username_rsa
# enter passphrase and continue...

答え1

その後、追加するキーはsudoセッションを開始したユーザーによって異なりますか?たぶん環境SUDO_USER変数が必要なのかもしれません。

sharedユーザーのシェル起動ファイル(.bash_loginBash.シェルをログインシェルとして起動するには使用する必要がありますsudo -i)に、次の内容を入力します。

eval $(ssh-agent -s)
ssh-add ~/.ssh/${SUDO_USER}_rsa

でも

if [ "$SUDO_USER" = userthis ] ; then 
    echo do something for this user
elif...
fi

もちろん、これらの共有アカウントの欠点は、誰もが実際にお互いのキーを持つことです。キーは単一のユーザーIDに保持され、共有アカウントの他のユーザーを区別できるものがないためです。

ssh-agent以前は通常のアカウントから始めて、sudosudoedシェルで利用できるかどうかわかりません。少なくとも、プロキシソケットの権限を変更する必要があると思います。これにより、同じアカウントの他のユーザーをコピーすることはできませんが、プロキシのキーを使用できます。

答え2

私はあなたのようになります:

eval $(ssh-agent -s)
ssh -A shared@localhost

これにより、共有ユーザーディレクトリに秘密鍵ファイルを配置する必要がなくなります。

関連情報