[英]ssh-add on command argument to su
我想启动一个 docker 容器,在启动时添加一个 ssh 密钥:
我的入口点如下所示:
#!/bin/bash
set -e
service ssh start
su anotherUser -s /bin/bash -c "eval \"$(ssh-agent)\" && ssh-add /Keys/id_rsa"
我看过很多使用sudo
的帖子,但我没有sudo
可用。 我找到了这个解决方案,但在启动时它向我显示:
[....] 启动 OpenBSD 安全 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)
在su
运行之前,您正在运行ssh-agent
。 $
需要转义,以便将文字命令替换传递给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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.