【问题标题】:ssh-add on command argument to sussh-将命令参数添加到 su
【发布时间】:2020-10-22 03:46:00
【问题描述】:

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

【问题讨论】:

  • 你可以试试'eval "$(ssh-agent)" && ssh-add /Keys/id_rsa' 吗?
  • 是的,谢谢 :)

标签: linux bash shell ssh sh


【解决方案1】:

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

【讨论】:

  • 第一个解决方案工作正常,但不是第二个......我认为这里有一个错误su anotherUser -s ssh-add /Keys/id_rsa
猜你喜欢
  • 1970-01-01
  • 2021-12-17
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多