如果我是root用户,如何为某些用户设置SSH密钥?

时间:2013-10-30 10:21:25

标签: linux git bash ssh

如果root用户正在运行bash脚本,该脚本在用户的计算机上配置某些内容。该脚本将为无密码github通信配置git存储库和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.

1 个答案:

答案 0 :(得分:0)

如果root用户没有在远程主机上登录,并且/root/.ssh不存在,我可以交互式地使用以下内容:

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

它读取USERNAME的~/.ssh/known_hosts file(或提示进行验证)。如果USERNAME的~/.ssh中存在正确的密钥,则会使用它们。完成后,仍然没有/root/.ssh,即完全按照USERNAME完成,而不是root。

同样使用git cloning:

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