0

这就是我需要的

我有一个托管一些 CGI shell 脚本的本地服务器。我在远程服务器中有一个文件。我希望我的 CGI 脚本将文件从远程服务器复制到本地服务器。

这是我尝试过的

为了避免每次都输入密码,我使用 ssh-keygen 命令创建了密钥文件,并将我的公钥文件复制到远程服务器 /root/.ssh/authorised_keys 文件中,并且它起作用了。每当我执行 scp user@remotehost:/root/ 时。无需任何手动身份验证即可将预期文件复制到我的本地服务器,这很完美。

现在,我想为触发 CGI 脚本的 apache 用户做同样的事情。我使用以下命令为 apache 用户生成密钥文件

sudo -u _apache ssh-keygen -t rsa

和系统响应是

Enter file in which to save the key (/Library/WebServer/.ssh/id_rsa) 

通常我的 .ssh 密钥存储在位置 /root/.ssh ,为什么系统我的命令默认为 /Library/WebServer ?我可以有两个 .ssh 文件吗?

除了我正在尝试的解决方案之外,还有其他解决方案吗?

谢谢

4

1 回答 1

1

系统中的每个用户都应该有他/她自己的 ~/.ssh 目录。

当 ssh 运行时,它将在用户的主目录中查找 .ssh 目录。您可以从 /etc/passwd 或使用手指实用程序检查用户的主目录是什么。读取 /etc/passwd 时,主目录是倒数第二个。例如:

postgres:x:106:115:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

在这种情况下,主目录是 /var/lib/postgresql

为了解决您的问题,如果您不打算将 ssh 用于其他任何用途,您只需将 id_rsa 密钥从第一个用户复制到第二个用户的 .ssh 目录(更改用户所有权并保留文件 chmod go-rwx )。

或者您可以像以前一样生成一个新密钥,然后将新的 .ssh/id_rsa 附加到远程 .ssh/authorized_keys。

请注意,第一种方法将有两个用户共享相同的 RSA 密钥,请注意,您实际上不应该让远程计算机上的 root 用户拥有可在 CGI 脚本中使用的授权密钥。两者都是安全风险。最好在远程机器上创建一个非特权用户并使用它来传输文件。

于 2013-07-31T13:01:21.787 回答