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
我想启动一个在启动时添加 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