2013-07-31 134 views
0

这就是我需要的使用CGI脚本从远程服务器移动文件

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

这是我试过

为了避免输入密码每次,我创建使用ssh-keygen命令密钥文件,并复制我的公钥文件到远程服务器/root/.ssh/authorised_keys文件和它的工作。每当我执行scp user @ remotehost:/ root /。预期的文件被复制到我的本地服务器没有任何手动验证,这是完美的。

现在,我想为apache用户发送CGI脚本的同样的东西。我用下面的命令来生成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文件吗?

除了我想要的还有其他的解决方案吗?

谢谢

回答

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密钥,并且请注意,您应该在远程计算机上确实没有拥有可从CGI脚本中使用的授权密钥的root用户。两者都是安全风险。最好在远程机器上创建一个非特权用户并使用它来传输文件。

相关问题