在 symfony2 脚本中将 scp 作为 apache
make an scp as apache in symfony2 script
我对本地主机和目标主机之间的 scp 和 apache 用户有疑问。
在我的电脑中,我在 /var/www/ 中创建了一个文件夹 .ssh,并且为 www-data 用户生成了一个 rsa 密钥。
接下来,我已将 id_rsa.pub 内容复制到目标服务器上的 authorized_key 文件。
当我制作这样的 scp sudo -u www-data scp somefile.php root@destination_ip:/home/ 时,它有效。
但我在 symfony 脚本中使用它。
$process = new Process('scp somefile.jpg root@destination_ip:/home/');
$process->setTimeout(3600);
$process->run();
if (!$process->isSuccessful()) {
throw new \RuntimeException($process->getErrorOutput());
}
但是抛出异常消息主机密钥验证失败。
我不明白为什么。
你能帮帮我吗?
这是因为运行 apache 进程的用户不是 root,并且无权连接到该服务器。检查用户是 运行 你的 apache(通常是 www-data?,试试 ps aux | grep apache
),然后从命令行:
sudo su www-data
scp somefile.jpg root@destination_ip:/home/
如果它要求您输入密码,您需要从 www-data 用户复制 ssh 密钥。可能 ssh-copy-id root@destination_ip
会起作用,然后重试 scp 命令应该会起作用。请注意,您可能需要为 www-data 用户生成 ssh-keys。
您可以使用 ssh2 php 库并通过 ssh2_scp_send 命令复制文件。关于这个命令,查看php手册...http://php.net/manual/en/function.ssh2-scp-send.php
示例代码可能是...
$connection = ssh2_connect('shell.example.com', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'username',
'/var/www/.ssh/id_rsa.pub',
'/var/www/.ssh/id_rsa', 'secret')) {
echo "Public Key Authentication Successful\n";
} else {
die('Public Key Authentication Failed');
}
ssh2_scp_send($connection, '/local/somefile.jpg', '/remote/somefile.jpg', 0644);
我对本地主机和目标主机之间的 scp 和 apache 用户有疑问。
在我的电脑中,我在 /var/www/ 中创建了一个文件夹 .ssh,并且为 www-data 用户生成了一个 rsa 密钥。
接下来,我已将 id_rsa.pub 内容复制到目标服务器上的 authorized_key 文件。
当我制作这样的 scp sudo -u www-data scp somefile.php root@destination_ip:/home/ 时,它有效。
但我在 symfony 脚本中使用它。
$process = new Process('scp somefile.jpg root@destination_ip:/home/');
$process->setTimeout(3600);
$process->run();
if (!$process->isSuccessful()) {
throw new \RuntimeException($process->getErrorOutput());
}
但是抛出异常消息主机密钥验证失败。
我不明白为什么。
你能帮帮我吗?
这是因为运行 apache 进程的用户不是 root,并且无权连接到该服务器。检查用户是 运行 你的 apache(通常是 www-data?,试试 ps aux | grep apache
),然后从命令行:
sudo su www-data
scp somefile.jpg root@destination_ip:/home/
如果它要求您输入密码,您需要从 www-data 用户复制 ssh 密钥。可能 ssh-copy-id root@destination_ip
会起作用,然后重试 scp 命令应该会起作用。请注意,您可能需要为 www-data 用户生成 ssh-keys。
您可以使用 ssh2 php 库并通过 ssh2_scp_send 命令复制文件。关于这个命令,查看php手册...http://php.net/manual/en/function.ssh2-scp-send.php
示例代码可能是...
$connection = ssh2_connect('shell.example.com', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'username',
'/var/www/.ssh/id_rsa.pub',
'/var/www/.ssh/id_rsa', 'secret')) {
echo "Public Key Authentication Successful\n";
} else {
die('Public Key Authentication Failed');
}
ssh2_scp_send($connection, '/local/somefile.jpg', '/remote/somefile.jpg', 0644);