SFTP应用(二)

SFTP应用(二)

SFTP Server

SSH2

sftp操作

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

  1. 控制链路—TCP端口21。控制器端。用于发送指令给服务器以及等待服务器响应。
  2. 数据链路---TCP端口20。数据传输端口。用来建立数据传输通道的。主要用来从客户向服务器发送一个文件、从服务器向客户发送一个文件、从服务器向客户发送文件或目录列表。

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

FTP的安全隐患:

  1. FTP服务器软件漏洞。
  2. 明文口令。
  3. FTP旗标。
  4. 通过FTP服务器进行端口扫描。
  5. 数据劫持。

FTP的安全策略:

  1. 使用较比安全的系统和FTP服务软件。
  2. 使用密文传输用户名和口令。
  3. 更改服务软件的旗标。
  4. 加强协议安全性。

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

搭建SFTP server【我这里用的是Windows系统】

  • 使用FreeSSHrd;
  • 教程自行百度(很简单的),我这里创建了用户 sun ,密码141592;地址使用127.0.0.1,端口号 28(22端口被其他应用占用了,端口号随意设置,不要冲突就好),下面我会对此测试。

开启ssh2扩展【我这里用的是wamp】

  1. 打印phpinfo();找到你的Architectrue、Thread Safety(enabled 线程;disabled 非线程),后面会用到;
  2. http://windows.php.net/downloads/pecl/releases/ssh2/0.12 打开找到你的对应版本下载下来;
  3. 会有三个文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。将 php_ssh.dll、php_ssh2.pdb 放到你的wamp/bin/php/ext/ 下;将libssh2.dll 复制到 c:/windows/system32 和 c:/windows/syswow64 各一份
  4. 在wamp中的 php.ini中加入 extension=php_ssh2.dll。
  5. 重启wamp,扩展打开。

注意

  • 下载正确的ssh版本dll;

PHP操作实例

<?php
$strServer = "127.0.0.1";
$strServerPort = "28";
$strServerUsername = "sun";
$strServerPassword = "141592";
$csv_filename = "test.txt";

//connect to server
$resConnection = ssh2_connect($strServer, $strServerPort);

//ssh2_auth_password — Authenticate over SSH using a plain password
if(ssh2_auth_password($resConnection, $strServerUsername, $strServerPassword)){
     echo "connected\r\n";

    //ssh2_sftp — Initialize SFTP subsystem
    $resSFTP = ssh2_sftp($resConnection);    

    $resFile = fopen("ssh2.sftp://{$resSFTP}/".$csv_filename, ‘w‘);         //获取句柄
    fwrite($resFile, "Testing");  //写入内容
    fclose($resFile);   //关闭句柄
    echo "success\r\n";
}else{
    echo "Unable to authenticate on server";
}
?>

SFTP操作类

<?php

class SFTPConnection
{
    private $connection;
    private $sftp;

    public function __construct($host, $port=22)
    {
        $this->connection = @ssh2_connect($host, $port);
        if (! $this->connection)
            throw new Exception("Could not connect to $host on port $port.");
    }

    public function login($username, $password)
    {
        if (! @ssh2_auth_password($this->connection, $username, $password))
            throw new Exception("Could not authenticate with username $username " .
                "and password $password.");

            $this->sftp = @ssh2_sftp($this->connection);
            if (! $this->sftp)
                throw new Exception("Could not initialize SFTP subsystem.");
    }

    public function uploadFile($local_file, $remote_file)
    {
        $sftp = $this->sftp;
        $stream = @fopen("ssh2.sftp://$sftp$remote_file", ‘w‘);  //w

        if (! $stream)
            throw new Exception("Could not open file: $remote_file");

        $data_to_send = @file_get_contents($local_file);
        if ($data_to_send === false)
            throw new Exception("Could not open local file: $local_file.");

        if (@fwrite($stream, $data_to_send) === false)
            throw new Exception("Could not send data from file: $local_file.");
        @fclose($stream);
        return true;
    }

}

------ 天行健,君子以自强不息!

时间: 2024-11-05 13:30:10

SFTP应用(二)的相关文章

Xshell5下利用sftp上传下载传输文件

sftp是Secure File TransferProtocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp与 ftp有着几乎一样的语法和功能.SFTP为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式.其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来

Centos6搭建sftp服务器

一.创建sftp相关用户和目录 [[email protected] samba]# useradd -s /sbin/nologin -M sftp_user #创建一个系统用户,按需设置登录的shell和家目录 [[email protected] samba]# passwd sftp_user #设置密码,也是sftp登录的密码,公网上尽可能复杂点 [[email protected] samba]# mkdir /var/sftp/sftp_user -pv #创建sftp的根目录 [

CentOS 7 配置SFTP

目前越来越多的FTP客户端软件开始支持SSH协议上传和下载文件,这种协议方式就是SFTP. SFTP的优势主要有两点,一是不需要再配置个FTP服务端:二是SSH协议是安全传输,上传和下载是经过加密的. 下面介绍下在最常用的服务器系统 CentOS Linux 7 上配置 SFTP 的方式! 一.sftp 安装 第一步:创建sftp服务用户组,创建sftp服务根目录: groupadd sftp #此目录及上级目录的所有者(owner)必须为root,权限不高于755,此目录的组最好设定为sftp

python sftp.get 同步远程文件夹 实践二

主要用途,从本机获取远端机器的文件夹 #!/usr/bin/python    import pexpect import paramiko   import os import sys import time import multiprocessing import datetime import crash_on_ipy from stat import S_ISDIR    ip_list = [] #room_id = sys.argv[1] cur_time = datetime.d

搭建sftp服务+nginx代理

在公司,经常会用到sftp服务,比如两个公司对接生产项目,其中一方,要在sftp上上传pdf文件,另一方公司要在sftp服务器上用nginx代理直接下载pdf文件.下面就说说我在实际中应用到的sftp服务+nginx代理的配置方法: 一.环境: 192.168.16.12     centos6.5 在Centos 6.5环境使用系统自带的internal-sftp搭建SFTP服务器. 二.查看版本 查看openssh的版本,使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p

C#远程执行Linux系统中Shell命令和SFTP上传文件

一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = new Renci.SshNet.SshClient("192.168.1.104", "sindrol", "123456"); ssh.Connect(); while (true) { Console.WriteLine("please input com

VMware Horizon View Config Tool 用户使用手册之二 -- 部署Horizon View Configuration Tool

部署Horizon View Configuration Tool 导入VMware Studio和Horizon View Configuration OVA 文件,运行虚拟机,之后对这两个虚拟机进行配置,然后才可以使用vCT. 需要下载的文件包括: VMware_Studio-2.6.0.1-702761_OVF10.ova or VMware_Studio_2.6.0.1 .ova – 1.5GB 你可以下载VMware Studio在VMware网页: 下载链接: https://my.

sftp

一.首先查看系统自带openssh软件组的版本,版本过低则不支持此功能 1.  ssh -V  #系统自带为4.3版本,版本过低,不支持此功能,升级openssh的版本 二.升级Openssh组件版本,在此将其升级为5.8版本: 1.下载所需要的软件:libedit0-3.0-1.20090722cvs.el5.x86_64wget http://dl.atrpms.net/el5-x86_64/atrpms/stable/libedit0-3.0-1.20090722cvs.el5.x86_6

SSH学习之二 OpenSSH配置文件解析

下面是对SSH配置文件的一些选项的分解说明,ssh_config是OpenSSH客户端的配置文件,sshd_config是OpenSSH服务器端的配置文件. ssh_config的内容如下: # This is the ssh client system-wide configuration file.  See ssh_config(5) for more information.  This file provides defaults for users, and the values c