繁体   English   中英

ssh-将命令参数添加到 su

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM