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. 经验说丨华为云视频Cloud Native架构下实践

    摘要:来自华为云直播的段亮详细介绍华为云视频在Cloud Native的转型实践中遇到的问题.挑战以及解决之道. 随着云基础设施服务以及边缘计算技术的发展,Cloud Native,即云原生,架构理念 ...

  2. 【scikit-learn基础】--『监督学习』之 层次聚类

    层次聚类算法是机器学习中常用的一种无监督学习算法,它用于将数据分为多个类别或层次.该方法在计算机科学.生物学.社会学等多个领域都有广泛应用. 层次聚类算法的历史可以追溯到上世纪60年代,当时它主要被用 ...

  3. Chrome浏览器导出HTTPS证书

    点证书小锁 进入证书界面 到详情中,导出证书

  4. 视频云AI时代,穿越市场第一,想象更多

    国际权威数据公司IDC发布<中国视频云市场跟踪(2023 H1)>报告:自2018年至今,阿里云持续保持中国视频云整体市场第一,整体市场占比达24.4%. 01 第一之外,低谷之上 近期, ...

  5. ME51N 创建采购申请

    1业务说明 当寻源后,将寻源结果汇总,并创建采购申请,之后据此创建采购订单. 此文档使用BAPI:BAPI_REQUISITION_CREATE创建采购申请 2前台实现 事务代码:ME51N 3代码实 ...

  6. js import的几种用法

    最近昨天公司小朋友离职,临时接收其负责的vue前端项目.vue好久没做了,很多东西都忘记或以前也没接触,几天开始慢慢写点vue的小知识,算是历程或备忘吧. import在js.ts中用了不知多少次,但 ...

  7. Socket | 大小端问题和网络字节序转换函数

    不同 CPU 中,4 字节整数 1 在内存空间的存储方式是不同的.4 字节整数 1 可用 2 进制表示如下: 00000000 00000000 00000000 00000001 有些 CPU 以上 ...

  8. AnaConda 虚拟环境创建失败的解决方案

    问题:创建环境时,AnaConda界面下放一直显示正在创建中,然后过几分钟报错! 我的解决方法:--关闭 VPN... 其他解决方案请参考这篇文章:Here

  9. POJ - 1190 生日蛋糕(深搜+神奇的剪枝)

    链接:https://ac.nowcoder.com/acm/contest/1015/B 题目描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱 ...

  10. Dubbo 泛化调用在vivo统一配置系统的应用

    作者:vivo 互联网服务器团队- Wang Fei.LinYupan Dubbo泛化调用特性可以在不依赖服务接口API包的场景中发起远程调用, 这种特性特别适合框架集成和网关类应用开发. 本文结合在 ...