gpt4 book ai didi

linux - 如果我是 root,如何为某些用户设置 SSH key ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:37 26 4
gpt4 key购买 nike

如果 root 用户正在运行 bash 脚本,为用户在机器上配置一些东西。该脚本将配置一个 git 存储库和一个用于无密码 github 通信的 ssh key ,然后它将克隆该存储库。这只会发生一次。

我是 bash 的新手,我该怎么做?

到目前为止我的解决方案(此脚本以 root 身份运行):

USERNAME="vagrant"
HOMEDIR="/home/$USERNAME"

apt-get update -y
apt-get install git -y
cp id_rsa* $HOMEDIR/.ssh #copying predefined keys
su -c "eval `ssh-agent -s` ssh-add $HOMEDIR/.ssh/id_rsa" $USERNAME
chmod 400 $HOMEDIR/.ssh/id_rsa
cat $HOMEDIR/.ssh/id_rsa.pub > $HOMEDIR/.ssh/known_hosts

这不起作用,因为没有添加 key ,我得到错误:

Could not open a connection to your authentication agent.

最佳答案

对于在远程主机上没有登录的 root 用户,并且 /root/.ssh 不存在,我可以通过以下方式交互式 ssh:

su - $USERNAME -c "ssh $USERNAME@<remotehost>"

它读取 USERNAME 的 ~/.ssh/known_hosts 文件(或提示验证)。如果 USERNAME 的 ~/.ssh 中存在正确的 key ,它将使用它们。完成后,仍然没有 /root/.ssh,即这完全是作为 USERNAME 完成的,而不是 root。

与 git 克隆类似:

su - $USERNAME -c "git clone remoteuser@host:/path/to/repo"

请注意引用。如果您希望在运行 su 时解除对变量的引用,请使用双引号。如果您希望在 su 移交给用户的 shell 之后解除对变量的引用,请使用单引号。示例:

su - myuser -c "echo $HOME"
/root

su - myuser -c 'echo $HOME'
/home/myuser

关于linux - 如果我是 root,如何为某些用户设置 SSH key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com