2

我正在尝试制作将执行 scp 命令并传递一些文件的 php 脚本。问题是该命令需要回答“是/否”问题和密码。我不知道如何从脚本中传递它。

我的代码:

$command = "scp $filename {$config['Username']}@{$config['Server']}:{$config['Basedir']}";
echo $command;

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", sys_get_temp_dir() . "/error.txt", "w"),  // stderr is a file to write to
);

$cwd = sys_get_temp_dir();
$env = array();
$process = proc_open($command, $descriptorspec, $pipes, $cwd, $env);
fwrite($pipes[0], "yes\n");
fwrite($pipes[0], $config['Password'] . "\n");
proc_close($process);

这没用。脚本问我“你确定要继续连接(是/否)吗?” 每次。

4

1 回答 1

1

这是一个安全确认,因为您连接到的远程服务器未在您的已知主机文件中列出。请手动打开 ssh 或 scp 连接。ssh 将要求您接受来自远程服务器的密钥。之后,您的命令应该可以工作。

还有一些选项可以帮助您进行 ssh 批处理。

-oStrictHostKeyChecking=[yes|no]
-oUserKnownHostsFile=[/dev/null]

我不会推荐这个。ssh 问你一个非常非常好的理由!

于 2013-11-29T15:09:26.673 回答