ssh-add 命令参数到 su

ssh-add on command argument to su

我想启动一个在启动时添加 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 解决方案,但在启动时它显示给我:

[....] Starting OpenBSD Secure Shell server: sshd 7[ ok 8.
Agent pid 36
Error connecting to agent: Permission denied

但是当我在提示符处执行相同的行时,一切正常:

xxx# su anotherUser
anotherUser@xxx:~$ eval $(ssh-agent)
Agent pid 47
anotherUser@xxx:~$ ssh-add /keys/id_rsa
Identity added: /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