我知道如何让用户使用密钥 ssh 进入另一个盒子:
ssh -l targetuser -i path/to/key targethost
Run Code Online (Sandbox Code Playgroud)
但是非帐户用户喜欢什么呢apache
?由于该用户没有可以写入.ssh
目录的主目录,因此整个事情一直失败:
$ sudo -u apache ssh -o StrictHostKeyChecking=no -l targetuser -i path/to/key targethost
Could not create directory '/var/www/.ssh'.
Warning: Permanently added '<hostname>' (RSA) to the list of known hosts.
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
我尝试过使用-o UserKnownHostsFile=/dev/null
和设置$HOME
to 的变体/dev/null
,但这些都没有达到目的。我知道这sudo
可能会为我解决这个问题,但我试图避免需要手动服务器配置,因为此代码将部署在许多不同的环境上。
有任何想法吗?
以下是我尝试过但不起作用的一些示例:
$ sudo -u apache export HOME=path/to/apache/writable/dir/ ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=path/to/apache/writable/dir/.ssh/known_hosts -l deploy -i path/to/key targethost
$ sudo -u apache ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=path/to/apache/writable/dir/.ssh/known_hosts -l deploy -i path/to/key targethost
$ sudo -u apache ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -l deploy -i path/to/key targethost
Run Code Online (Sandbox Code Playgroud)
最终,我将使用此解决方案以用户身份运行 rsync apache
。