这就是我需要的
我有一个托管一些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中,为什么system my命令默认为/ Library / WebServer?我可以有两个.ssh文件吗?
除了我正在尝试的还有其他解决方案吗?
谢谢
答案 0 :(得分:1)
系统中的每个用户都应拥有自己的〜/ .ssh目录。
当ssh运行时,它将在用户的主目录中查找.ssh目录。您可以从/ etc / passwd或使用finger utilty检查用户主目录的内容。当读取/ etc / passwd时,主目录是结尾的第二个。例如:
postgres:x:106:115:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
在这种情况下,主目录是/ var / lib / postgresql
要解决您的问题,如果您不打算将ssh用于其他任何事情,您只需将id_rsa密钥从第一个用户复制到第二个用户的.ssh目录(更改用户所有权并保留文件chmod)去-RWX)。
或者你可以像你一样生成一个新密钥,然后将新的.ssh / id_rsa附加到远程.ssh / authorized_keys。
请注意,第一种方法将有两个用户共享相同的RSA密钥,请注意,远程计算机上的root用户应该没有可以在CGI脚本中使用的授权密钥。两者都是安全风险。最好在远程计算机上创建一个非特权用户并使用它来传输文件。