php操作sftp

php操作ftp有很多函数,打开手册 搜索FTP就可以出来一大片,可惜在工作中经常会遇到是SFTP的情况。

SFTP与FTP的不同如果你不知道话,我简单讲讲。

FTP是文件传输协议。在网站上,如果你想把文件和人共享,最便捷的方式莫过于把文件上传到FTP服务器上,其他人通过FTP客户端程序来下载所需要的文件。

FTP进行文件传输需要通过端口进行。一般所需端口为:

1.       控制链路—TCP端口21。控制器端。用于发送指令给服务器以及等待服务器响应。

2.       数据链路---TCP端口20。数据传输端口。用来建立数据传输通道的。主要用来从客户向服务器发送一个文件、从服务器向客户发送一个文件、从服务器向客户发送文件或目录列表。

 

FTP为了适应不同的网络环境,支持主动连接和被动连接两种模式。这两种模式都主要针对数据链路进行的,跟控制链路无关。

 

FTP的安全隐患:

一、FTP服务器软件漏洞。

二、明文口令。

三、FTP旗标。

四、通过FTP服务器进行端口扫描。

五、数据劫持。

 

FTP的安全策略:

一、使用较比安全的系统和FTP服务软件。

二、使用密文传输用户名和口令。

三、更改服务软件的旗标。

四、加强协议安全性。


SFTP是Secure File Transfer Protocol的缩写,是安全文件传送协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。

SFTP是SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。它本身没有单独的守护进程,必须使用sshd守护进程来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以使用SFTP是十分安全的。但由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。在对网络安全性要求更高时,代替FTP使用。

下面讲讲如何用吧,上面部分内容来自互联网.

打开php手册搜索ssh,会得到一组ssh2开头的函数,他们就是我们使用sftp的关键。下面这个是方法,连接SFTP并且创建目录,上传文件. C('local_user_avatar') 这是TP里面的C方法 读取配置,BASE_PATH是个常量.至于其他的方法还是看手册吧.多看手册 多练习。


public function sftp($pic_name,$pre_path){
    $connection = ssh2_connect('XX.XX.XX.XX', 22);
    ssh2_auth_password($connection, 'user', 'pwd');
    $sftp = ssh2_sftp($connection);
    ssh2_sftp_mkdir($sftp , C('remote_user_avatar').$pre_path,0777,TRUE);//从根目录开始创建
    $local_path = BASE_PATH.C('local_user_avatar');
   echo ssh2_scp_send($connection,$local_path.$pic_name ,  C('remote_user_avatar').$pre_path.'/'.$pic_name, 0777) ?'' :$pic_name.'上传到服务器失败<br/>';
    ssh2_exec($connection, 'exit');
}


nickname
content