使用PHP设置SSH连接和SFTP

时间:2016-02-08 10:44:25

标签: php ssh ftp sftp

我尝试设置ssh连接,稍后设置sftp连接,通过FTP将文件传输到我的服务器。我之前使用过FileZilla成功上传文件。

这些是我的登录终端命令和FileZilla登录信息:

ssh b0xxxxx@linux7.aa.bb.cc.dd
Host: sftp://linux7.aa.bb.cc.dd
Username: b0xx
Port: 22

这是我的php代码:

<?php
    $ftp_server = "b0xx@linux7.aa.bb.cc.dd";
    $ftp_port = 22; 
    $ftp_user = "b0xx";
    $ftp_pass = "##";
    $connection = ssh2_connect($ftp_server, $ftp_port);
    echo "Successful!\n";
    if (ssh2_auth_password($connection, $ftp_user, $ftp_pass)) {
      echo "Successful\n";
    } else {
      die ('Failed...');
    }
    $sftp = ssh2_sftp($connection);
    ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);

?>

问题1:我可以使用ftp函数从我的服务器上传/下载文件吗? 或者我必须设置ssh

问题2:当我执行代码时,网站只显示

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

表示代码未成功执行connection。有谁知道这个bug的原因?

非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

似乎没有安装SSH2 PECL扩展。安装扩展程序,然后尝试使用代码。

答案 1 :(得分:0)

$ftp_server = "b0xx@linux7.aa.bb.cc.dd";

“b0xx@linux7.aa.bb.cc.dd”不是主机名。主机名中不能包含“@”。这可能是“username @ hostname”字符串,但ssh_connect()不接受此表单中的字符串。

删除用户名部分:

$ftp_server = "linux7.aa.bb.cc.dd";