我想启动一个在启动时添加ssh密钥的docker容器:
我的入口点看起来像这样:
#!/bin/bash
set -e
service ssh start
su anotherUser -s /bin/bash -c "eval \"$(ssh-agent)\" && ssh-add /Keys/id_rsa"
我看过许多使用sudo
的帖子,但是我没有sudo
可用。我找到了this解决方案,但在启动时显示给我:
[....]启动OpenBSD Secure Shell服务器:sshd 7 [确定8。
代理pid 36
连接到代理时出错:权限被拒绝
但是当我在提示符下执行相同的行时,一切都很好:
xxx#su anotherUser
anotherUser @ xxx:〜$ eval $(ssh-agent)
代理pid 47
anotherUser @ xxx:〜$ ssh-add / keys / id_rsa
添加的身份:/ keys / id_rsa(yyy @ yyy-HP-EliteBook-850-G4)
答案 0 :(得分:1)
您正在运行ssh-agent
之前运行su
。 $
需要转义,以便将文字命令替换传递到bash
以便执行。
su anotherUser -s /bin/bash -c 'eval $(ssh-agent) && ssh-add /Keys/id_rsa'
(未经测试;可能需要有关容器如何运行以及ssh-add
为什么需要以其他用户身份运行的更多详细信息。)
不过,使用 ssh-agent
运行入口点可能更简单。例如,
# In the Dockerfile...
ENTRYPOINT ["ssh-agent", "entry.sh"]
在entry.sh
内部,您的环境已经可以访问该代理。
#!/bin/bash
set -e
service ssh start
su anotherUser -s ssh-add /Keys/id_rsa