在非用户 shell 中自动登录到 ssh-agent 会话

在非用户 shell 中自动登录到 ssh-agent 会话

由于我们无法控制的原因,我的团队在一些系统上通过非用户 shell 共享用户帐户。我们都将受密码短语保护的私钥移动到共享用户的 ~/.ssh 目录中。我们通常登录并打开一个ssh-agent会话,然后ssh-add使用我们的密码保护密钥,如下所示。我们都不喜欢这个工作流程,我们正在努力让它变得更容易。

有没有一种方法可以在我们打开共享用户的 shell 时自动提示我们输入密码?

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用户的 shell 启动文件中(例如.bash_loginBash。尽管您需要使用 来将 shell 作为登录 shell 启动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-agentbefore sudo,然后从 sudoed shell 中使用它。我想它至少需要修复代理套接字的权限,即使这样,同一帐户的其他用户也可以使用代理中的密钥,尽管可能不会复制它们。

答案2

我会像你一样:

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

这样您就不必将私钥文件放在共享用户的目录中。

相关内容