sftp的简介


  • 关于sftp
   sftp是Secure FileTransferProtocol的缩写,安全文件传送协议,可以为传输文件提供一种安全的加密方法。
sftp与 ftp有着几乎一样的语法和功能,SFTP为 SSH的一部分,是一种传输文件到服务器的安全方式。
其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File TransferProtocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。它的优势在于可以利用安全的连接传输文件,还能遍历本地和远程系统上的文件系统。
由于采用明文传输用户名和密码,FTP协议是不安全的。在同一机房中只要有一台服务器被攻击者控制,它就可能获取到其它服务器上的FTP密码,从而控制其它的服务器。
来源: https://www.jianshu.com/p/f46982f5b03b
  • 关于 ssh
   简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。
来源: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
  • 自己的理解
1. OpenSSH 是为了能够安全的在网络上进行信息传输的一种工具. 大部分情况下他基于OpenSSL进行编译安装与使用.
2. sftp是SSH协议上面为了实现安全的文件传输的一个扩展,能够实现明文传输ftp协议的大部分功能, 但是因为基于OpenSSL的全加密传输,在不可信的网络上面更加安全和可靠.
3. 为了安全, 一般的sftp服务器一般需要设置为 /bash/nologin 避免能够sftp客户端密码外泄后导致服务器出现安全隐患.
4. sftp没有单独的 daemon进程, 需要使用 sshd的驻留进程进行处理, 修改时要比较小心, 避免造成sshd服务异常,无法远程连接服务器.
5. 如果使用非root用户时 上传目录的权限要求比较严格,要求sftp的用户的目录比如是root用户才可以读写,的兵器不能是 777 建议是 755, 如果要进行上传,需要在sftp用户的目录下面 单独进行添加目录 赋予sftp的用户 属主权限才可以进行相应处理.

搭建过程


1. 创建用户组和用户
groupadd sftpgroup
useradd -g sftpgroup -M -s /sbin/nologin sftpuser
# 注意必须赋予 nologin 已策安全
2. 修改sshd的配置文件
vim /etc/ssh/sshd_config
# 注意很多网页的说法挺多 我都测试了下,发现如下修改就可以.
# 注意 第一行Subsystem 是原来就有的, 需要注意一下.
Subsystem sftp /usr/libexec/openssh/sftp-server
Match Group sftpgroup
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
# 注意 ChrootDirectory 指向的是sftpuser 对应的 家目录 后面进行设置, 需要严格注意权限问题
3. 创建sftpuser的相关目录以及权限
# 注意目录需要选择一个空间比较足的机器
# 注意需要定期备份, 建议可以使用rsync 将文件备份到其他物理机甚至是其他机房的机器上面.
# 注意家目录权限比较特殊, 是 sftpgroup的 用户组, 但是是 root 用户的属主.
# 注意目录必须是 755的权限
mkdir -p /data/sftp/
usermod -d /data/sftp/ sftpuser
chown root:sftpgroup /data/sftp
chmod 755 /data/sftp
mkdir /data/sftp/upload
chown sftpuser:sftpgroup /data/sftp/upload
chmod 755 /data/sftp/upload -R
4. 设置完成后 进行一次 sshd服务的重启
systemctl restart sshd

使用验证


  • 如果启动连接不上 提示一些错误信息 可以参考如下日志内的信息
/var/log/secure
  • 注意 Linux的系统日志非常值得学习和研究 遇到问题多看日志, 跟写代码时里面调试的效果差不多.
  • 使用lftp 进行验证, 避免每次都输入密码
yum install lftp
# 只需要 base 的repository 就可以了 ,安装还是很简单的.
登录sftp 服务器.
lftp sftpuser,yourpassword sftp://127.0.0.1/upload
一般就可以登录
[root@k8s-master01 ~]# lftp -u sftpuser,Password sftp://127.0.0.1/upload
cd 成功, 当前目录=/upload
lftp sftpuser@127.0.0.1:/upload>
  • 命令简介
pwd # 展示远程工作目录, 注意这里面不需要添加 sftpuser的家目录, 也就是不需要加属主是root用户的那部分目录.
lpwd # 展示当前操作者的目录,也就是执行命令之前的目录.
put # 上传文件
get # 下载文件
mkdir # 创建文件夹
  • 需要注意的一点是 lftp 好像不能上传目录, sftp 直接的命令应该是可以的.
  • 一个比较全的命令介绍 , 注意需要使用 sftp 而不是使用lftp lftp 支持的命令比较少一些. From https://www.cnblogs.com/chenyablog/p/12394932.html
cd 路径                        更改远程目录到“路径”
lcd 路径 更改本地目录到“路径”
chgrp group path 将文件“path”的组更改为“group”
chmod mode path 将文件“path”的权限更改为“mode”
chown owner path 将文件“path”的属主更改为“owner”
exit 退出 sftp
help 显示这个帮助文本
get 远程路径 下载文件
ln existingpath linkpath 符号链接远程文件
ls [选项] [路径] 显示远程目录列表
lls [选项] [路径] 显示本地目录列表
mkdir 路径 创建远程目录
lmkdir 路径 创建本地目录
mv oldpath newpath 移动远程文件
open [用户@]主机[:端口] 连接到远程主机
put 本地路径 上传文件
pwd 显示远程工作目录
lpwd 打印本地工作目录
quit 退出 sftp
rmdir 路径 移除远程目录
lrmdir 路径 移除本地目录
rm 路径 删除远程文件
lrm 路径 删除本地文件
symlink existingpath linkpath 符号链接远程文件
version 显示协议版本

非root用户搭建sftp以及进行简要使用的介绍的更多相关文章

  1. MHA非root用户搭建测试

    最近一直在瞎搬砖,最大的感触是运维工作难做.不过废话不多说,最近被分配了一项比较有意思的task,尝试着非root用户搭建MHA并测试下能否成功漂移,以下是两天测试和文档编写的成果,分享给各位看客,欢 ...

  2. 非root用户搭建hadoop伪分布式

    0.安装软件列表 jdk-7u25-linux-x64.tar.gz hadoop-2.5.0.tar.gz hadoop-native-64-2.5.0.tar   1.准备Linux环境(root ...

  3. linux非root用户下安装软件,搭建生产环境

    之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...

  4. 非root用户安装软件

    下面简要说一下Linux下非root用户安装软件的一般流程: 1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码. 2. 解压源代码,一般使用tar - ...

  5. Linux下非root用户如何安装软件

    Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...

  6. 源代码安装-非ROOT用户安装软件的方法

    0.    前言 如果你没有sudo权限,则很多程序是无法使用别人编译好的文件安装的. 还有时候,没有对应你的主机配置的安装包,这时候需要我们自己下载最原始的源代码,然后进行编译安装. 这样安装的程序 ...

  7. Linux环境(服务器)下非root用户安装Python3.6

    Linux环境(服务器)下非root用户安装Python3.6 在管理实验室集群时候,遇到的问题--非root用户在搭建自己环境时候,如何搭建. 注意: root用户的根目录是root,非root用户 ...

  8. 【异常】ssh无法登录验证,非root用户ssh本机无法成功

    1 自己搭建的是伪分布式环境,需要以非root用户启动Hadoop集群,之前root已经配置了ssh免密登录,但是自己切换到hdfs用户重新生成了一套ssh key, 但是切换到hdfs始终无法成功登 ...

  9. 非root用户随开机而启动mysql服务

    非root用户随开机而启动mysql服务 今天验证了一下,非root用户随开机而启动msyql服务的脚本执行效果,特此简要记录如下: 环境: 192.168.142.130 mysql 5.6.41 ...

  10. ubuntu下非root用户下获得使用wireshark的权限

    在非root用户下不能使用wireshark用来抓包,所以需要进行以下操作: sudo groupadd wireshark sudo chgrp wireshark /usr/bin/dumpcap ...

随机推荐

  1. 什么是VXLAN?为什么需要VXLAN?

    摘要:本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作原理,包括:为什么需要VXLAN?VXLAN与VLAN之间有啥不同?什么是VTEP?什么是VNI?VXLAN报文是如何封装的?VXLAN ...

  2. Python图像处理丨图像缩放、旋转、翻转与图像平移

    摘要:本篇文章主要讲解Python调用OpenCV实现图像位移操作.旋转和翻转效果,包括四部分知识:图像缩放.图像旋转.图像翻转.图像平移. 本文分享自华为云社区<[Python图像处理] 六. ...

  3. 大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format

    Caused by: org.apache.kafka.connect.errors.ConnectException: The MySQL server is not configured to u ...

  4. 【eBPF-04】进阶:BCC 框架中 BPF 映射的应用 v2.0——尾调用

    这两天有空,继续更新一篇有关 eBPF BCC 框架尾调用的内容. eBPF 技术很新,能够参考的中文资料很少,而对于 BCC 框架而言,优秀的中文介绍和教程更是凤毛麟角.我尝试去网上检索有关尾调用的 ...

  5. 让 ChatGPT 如虎添翼 2.0

    月初写了4个工具,让 ChatGPT 如虎添翼!,时隔二十多天,我又发现了基于ChatGPT的应用,只推最好用的,强烈建议大家都感受一下. 极简搭建 ChatGPT 演示网页 项目地址:https:/ ...

  6. STM32CubeMX教程16 DAC - 输出3.3V内任意电压

    1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK ...

  7. MIGO BAPI_GOODSMVT_CREATE创建及增强

    1.MIGO过账BAPI新增字段 BAPI新增收货行号字段,保存外围系统的数据 1.1.MATDOC表新增收货行号 1.2.MSEG表新增收货行号 创建DDL视图用于扩展NSDM_E_MSEG 1.3 ...

  8. SpringMVC 获取请求参数(精简版)

    SpringMVC获取请求数据: DispatcherServlet底层中获取请求数据并传递给单元方法使用. DispatcherServlet会根据请求动态调用对应的单元方法处理,而请求先被Disp ...

  9. 骨牌摆放问题 POJ 2411(状态压缩DP)

    题目: 给你\(n*m(1<=n,m<=11)\)的方格矩阵,要求用1*2的多米诺骨牌去填充,问有多少种填充方法. 比如下图是对于如下2x6的方格矩阵,可能的填充方案之一. 该如何使用动态 ...

  10. Java面试——基础知识点

    JVM Jvm体系总体分四大块:类的加载机制.Jvm内存结构.GC算法垃圾回收.GC分析命令调优. 类的加载机制 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的 ...