在 PHP 中执行系统调用来运行 SCP 时,每次都会要求输入密码,即使设置了 SSH 密钥

在 PHP 中执行系统调用来运行 SCP 时,每次都会要求输入密码,即使设置了 SSH 密钥

因此,我正在创建一个 PHP 脚本,用于将图像从本地环境上传到远程服务器。我有SSH 密钥在两端都设置了,如果我简单地在终端中执行 scp 命令,它有时不要求输入密码,有时则要求输入密码。此外,出于某种原因,它需要大约 30-60 秒才能返回结果SCP命令。

<?php 
    $result = system("scp /home/pi/camImage1.jpg username@<myserver>:~/public_html/folder1/innerfolder/camImage.jpg");
    echo $result;
?> 

每当我在 php 端使用它时,它总是要求输入密码。有什么建议可以告诉我到底发生了什么吗?

答案1

作为您的普通用户,我猜您在内存 (ssh-agent) 中拥有 ssh 密钥,因此第一次连接后不需要密码。使用 php 运行 scp 命令时您没有指定密钥,所以我猜您被要求输入用户登录密码而不是 ssh 密钥。

在我看来,如果您希望通过 php 运行此命令,我建议您创建一个没有密码的密钥,并在服务器上禁用通过密码登录。然后使用 scp 命令指定一个密钥。

scp -i /home/pi/.ssh/your_key ...

有关使用密钥、禁用密码验证的更多信息,请参阅发行版的文档。

相关内容