Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将ssh附加命令参数添加到su_Linux_Bash_Shell_Ssh_Sh - Fatal编程技术网

Linux 将ssh附加命令参数添加到su

Linux 将ssh附加命令参数添加到su,linux,bash,shell,ssh,sh,Linux,Bash,Shell,Ssh,Sh,我想启动一个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 Se

我想启动一个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 Secure Shell服务器:sshd 7[正常8.
代理pid 36
连接到代理时出错:权限被拒绝

但当我在promp执行相同的行时,一切都正常:

xxx#su另一个用户
anotherUser@xxx:~$eval$(ssh代理)
代理pid 47
anotherUser@xxx:~$ssh add/keys/id\u rsa
添加标识:/keys/id\u rsa(yyy@yyy-HP-EliteBook-850-G4)


在运行
su
之前,您正在运行
ssh代理。
$
需要转义,以便将文本命令替换传递给
bash
执行

su anotherUser -s /bin/bash -c 'eval $(ssh-agent) && ssh-add /Keys/id_rsa'

(未测试;可能需要更多关于容器如何运行以及为什么需要作为不同用户运行
ssh add
的详细信息。)

不过,使用
ssh代理运行入口点可能更简单

# 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

您可以尝试使用
'eval“$(ssh代理)”&&ssh add/Keys/id\u rsa'
来代替吗?是的,它可以工作,谢谢:)第一个解决方案可以工作,但第二个解决方案不行……我想在这里有一个错误
su另一个用户的ssh add/Keys/id\u rsa