【发布时间】:2013-10-30 10:21:25
【问题描述】:
如果 root 用户正在运行一个 bash 脚本,该脚本在机器上为用户配置一些东西。该脚本将配置一个 git 存储库和一个用于无密码 github 通信的 ssh 密钥,然后它将克隆存储库。 这只会发生一次。
我是 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
这不起作用,因为没有添加密钥,我收到错误:
Could not open a connection to your authentication agent.
【问题讨论】:
-
为什么脚本要以root用户身份运行?
-
这是一个很好的资源 - github.com/saga-project/BigJob/wiki/…
-
su -c行完全没有意义,因为id_rsa是执行 ssh 调用时自动搜索的文件之一。我会对 id_rsa 文件执行 chown 以确保它归相关用户所有。我完全不支持这个过程 -
@akluth 即使我用 sudo 运行脚本(因为它需要预先安装一些包)它仍然无法工作。
-
你在使用 vagrant 吗?如果是这样,并且您正在使用已知约定设置的框,则 vagrant 用户具有无密码 sudo 权限。考虑使用 Puppet 或 Chef 进行上述设置(当然,如果您使用的是 vagrant)。