ssh-将命令参数添加到su

时间:2020-07-01 16:21:59

标签: linux bash shell ssh sh

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

1 个答案:

答案 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