SFTP远程文件上传

远程服务器remote_host=192.168.29.142

用户为remote_www,

用户当前目录为/home/remote_www

本地服务器local_host=192.168.29.135

用户为local_www

用户当前目录为/home/local_www

1.首先查看在本地服务器用户当前目录下是否有.ssh目录,即是否存在/home/local_www/.ssh/  如果没有.ssh目录,则创建:

$mkdir .ssh

在local_host机下生成公钥/私钥对。

$ssh-keygen -t rsa -P ''

-t表示密钥类型

-P表示密码,-P ''就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。

该命令将在/local_www/.ssh目录下面产生一对密钥id_rsa和id_rsa.pub。

一般采用的ssh的rsa密钥:

id_rsa     私钥

id_rsa.pub 公钥

下述命令产生不同类型的密钥

ssh-keygen -t dsa

ssh-keygen -t rsa

ssh-keygen -t rsa1

Generating public/private rsa key pair.

生成公钥/私钥rsa密钥对。

Enter file in which to save the key (/home/local_www/.ssh/id_rsa):

输入要保存密钥的文件

Your identification has been saved in /home/local_www/.ssh/id_rsa.

您的身份已保存在/home/local_www/.ssh/id_rsa中。

Your public key has been saved in /home/local_www/.ssh/id_rsa.pub.

您的公开金钥已储存在/home/local_www/.ssh/id_rsa.pub中。

The key fingerprint is:

关键指纹是:

ac:a7:4b:bd:3e:ae:a6:de:0f:b8:43:fe:c3:24:2d:b5 www@gold-dev002

The key's randomart image is:

+--[ RSA 2048]----+

|                 |

|                 |

|                 |

|      ..         |

|     o .S        |

|    +.Eo         |

|   o.=+ o        |

|    o+++..       |

|   .+=*B=.       |

+-----------------+

2.查看在远程sftp服务器用户当前目录是否有.ssh目录,即是否存在/home/remote_wwwr/.ssh/  如果没有.ssh目录,则创建:

$mkdir .ssh

3.将本地服务器生成的公钥上传到远程sftp服务器的/home/remote_www/.ssh/下

$scp id_dsa.pub remote_www@remote_host:/home/remote_www/.ssh/

4.查看在远程sftp服务器用户当前目录的.ssh目录是否有authorized_keys文件如果有则把新生成的公钥追加到authorized_keys:

$cat id_dsa.pub >> authorized_keys

(将id_rsa.pub的内容追加到authorized_keys中)

如果没有则把公钥id_dsa.pub重命名为authorized_keys:

$mv id_dsa.pub authorized_keys

$chmod 644 authorized_keys

修改文件的读写权限

5.测试在本地服务器上,以local_www登录

$sftp remote_www@remote_host如果成功则进入sftp服务器

sftp>

如果不成功,则提示要输入密码

简单测试代码:

function fileUpload($fileName)

{

$sftp = 'ssh2.sftp://';

//远程host

$remoteServer = 'remote.com';

//远程服务器端口

$remoteServerPort = 22;

//远程服务器用户名

$remoteServerUsername = 'www';

//本地公钥文件

$pubkey = '/local/id_rsa.pub';

//本地私钥文件

$prikey = '/local/id_rsa';

//连接SSH2服务器

$resConnection = ssh2_connect($remoteServer, $remoteServerPort);

if (!is_resource($resConnection)) {

die('连接失败');

}

//上传到远程服务器的绝对目录

$remotePath = '/data/other/' . $fileName;

//本地服务器的绝对目录

$localPath = '/data/other' . $fileName;

//密钥身份校验

if (ssh2_auth_pubkey_file($resConnection, $remoteServerUsername, $pubkey, $prikey)) {

//初始化SFTP子系统

$resSFTP = ssh2_sftp($resConnection);

if (!is_resource($resSFTP)) {

die('初始化SFTP子系统');

}

} else {

die('密钥身份校验');

}

if (!file_exists($sftp . $resSFTP . $remotePath)) {

$mkdir = ssh2_sftp_mkdir($resSFTP, $remotePath, 0755, true);

if (!$mkdir) {

die('文件夹创建失败');

}

}

//通过SCP发送文件

$sendbol = ssh2_scp_send($resConnection, $localPath, $remotePath, 0777);

if (!$sendbol) {

die('上传文件失败');

}

//没有关闭SSH会话,内部缓冲区不会被刷新,文件将不写入到磁盘

ssh2_exec($resConnection, 'exit');

return true;

}

php sftp上传图片,SFTP远道文件上传相关推荐

  1. Mac OS 使用命令(scp/sftp)将本地文件上传到远程 Linux 服务器主机或者从远程主机下载文件到本地主机

    文章目录 一.使用 scp 命令 (一)将本地的文件上传(上载/复制)到远程主机的指定目录下 (二)将本地主机的目录内容(含目录本身)上传到远程主机指定的目录下 1.将本地主机桌面上的目录 www 及 ...

  2. java jsch下载文件,JSch使用sftp协议实现服务器文件上传下载操作

    Jsch是什么? JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等.你可以将它的功能集成到你自己的 程序中.同时该项目也提供一个J2 ...

  3. tinymce上传图片php,图片文件上传

    此页更新时间:2020-10-28 11:46 配置选项列表: 如要快速上手,可以阅读<简介与入门:上传图片和文件>这个章节,里面包含完整的上传代码示例. automatic_upload ...

  4. springboot 上传图片大小_springboot 文件上传大小配置的方法

    springboot上传文件大小的配置我这里记录两种,一种是设置在配置文件里只有两行代码,一种是加个Bean 首先第一种: application.properties中添加 spring.http. ...

  5. php 上传图片 ftp,ftp文件上传_php ftp文件上传

    摘要 腾兴网为您分享:php ftp文件上传,有道英语,央视影音,学习计时,微光等软件知识,以及天天小视频,24小时时间计算器,oki5500f打印机驱动,中天期货,差旅天下,filegee企业文件同 ...

  6. java上传图片损坏_iview 文件上传二进制文件提示文件已经损坏

    使用iview的 Upload组件结合后端spring mvc做的文件上传,发现文本文件格式上传没问题,但上传其他格式的,比如 doc.xls.jar等格式文件,上传到后端后,打开均会提示文件已经损坏 ...

  7. php实现sftp上传文件,PHP-sftp文件上传

    PHP的sftp文件上传:在框架thinkphp5中使用: 主要用到的sftp函数如下: ssh2_connect(host,port) 链接信息 ssh2_auth_password($con,us ...

  8. Python实现阿里云aliyun服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 Python实现阿里云服务器里的文件上传与下载 背景: 正文: 预备环境: 构想: 实现: 注意: 结尾 018.4.15 背景: 老实说,因为现实的各 ...

  9. PHP-sftp文件上传

    个人博客地址https://xgs888.top/post/view?id=57 PHP的sftp文件上传:在框架thinkphp5中使用: 主要用到的sftp函数如下: ssh2_connect(h ...

最新文章

  1. php 函数:func_get_args()、func_get_arg()与func_num_args()
  2. [实变函数]4.2 Egrov 定理
  3. 数据中心空调施工工序工艺管理要点
  4. 01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置
  5. JAVA-2NIO之Channel
  6. 第2年,倒数第3天,1.5万票,感动!
  7. 找出出现次数最多的字母
  8. java 服务器 时间_java 获取服务器的时间,年月日时分秒
  9. 百度OCR文字识别API使用心得===com.baidu.ocr.sdk.exception.SDKError[283604]
  10. 深度学习系列(二)【人类语言处理--语音辨识】
  11. poj 1958 Strange Towers of Hanoi dp,需要仔细读题
  12. 15.企业应用架构模式 --- 分布模式
  13. 机器学习为您揭秘雾霾怎么形成
  14. Java知识点复习:Day14
  15. 山东大学计算机专业知名教授,胡思煌 山东大学主页平台管理系统--胡思煌
  16. 科学计算库Pandas的使用(附思维导图)
  17. uniapp 图片上传与展示
  18. 【多元统计分析】一、多元统计分析概述
  19. IDEA 出现 Exception in thread main java.lang.OutOfMemoryError: Java heap space 解决方式
  20. 基于VCS使用VPI+PLI/DPI在verilog中调用C程序进行cover property驱动的仿真控制

热门文章

  1. 激励人生成功的10句经典中英文
  2. HTML和CSS实现京东首页(html和css详解)
  3. Xposed插件开发环境配置
  4. C++ 虚函数表 vfptr
  5. 十大常见web漏洞及防范
  6. 淘宝电商用户行为数据分析及可视化—基于MySQL/Tableau/PPT(含分析报告及代码)
  7. JAVA程序包装成桌面应用程序
  8. libapache2-mod-php5 apache,Debian Etch libapache2-mod-php5 with bundled libgd
  9. PC微信更改文件默认保存位置后聊天记录丢失
  10. 利用python爬取飞猪信息_Python---20行代码爬取斗鱼平台房间数据(下)-阿里云开发者社区...