由PHP执行时,SCP主机密钥validation失败

我正在尝试使用scp来复制文件。 我使用PHP的命令shell_exec来执行这个命令:

scp -i/home/raul/nueva_clave -q -v /home/raul/www/CA/app/tmp/ImagenWeb TA-adm@127.0.0.1:/home/TA-adm/images/IMG_3846.JPG 2>&1 

服务器地址是127.0.0.1,因为我仍在开发脚本。 我稍后再改。

我使用scp而不是PHP的ssh2_scp_send,因为我不想在我的项目中写入服务器的密码。 相反,我想使用公钥。 但是,当我在PHP中执行这是结果:

 Executing: program /usr/bin/ssh host 127.0.0.1, user TA-adm, command scp -v -t -- /home/TA-adm/images/IMG_3846.JPG OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 127.0.0.1 [127.0.0.1] port 22. debug1: Connection established. debug1: SELinux support disabled Could not create directory '/nonexistent/.ssh'. debug1: identity file /home/raul/nueva_clave type 1 debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 debug1: identity file /home/raul/nueva_clave-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1 debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA 2d:71:67:30:89:c0:1a:64:41:b5:07:8f:6d:c5:9f:13 debug1: read_passphrase: can't open /dev/tty: No such device or address Host key verification failed. lost connection 

如果我执行这个命令与我的用户在terminal,我没有任何问题。 我想问题是用户没有人正在执行scp。 我正在使用Ubuntu。

(由OP在一个问题编辑中回答,在这里移动,看到没有答案的问题,但问题解决了(或在聊天中扩展) )

该OP写道:

这是解决的。 我用过这些选项:

 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no 

因此scp命令不会尝试将主机插入用户nobody的文件known_host文件中( scp无法创建文件,因为用户nobody没有~/.ssh )。