sftp

 

1、常用命令

 lcd D:\work\Xshell\save\sftp   ------------------修改本地保存路径

get pcs-core-0.0.1-SNAPSHOT.jar
 

 


get 文件名 ------------------下载文件
put 文件名 ------------------上传文件
pwd  ------------------是看远端服务器的目录, 即sftp服务器默认的当前目录。 
 lpwd  ------------------是看linux本地目录。
ls  ------------------是看sftp服务器下当前目录下的文件,
 lls  ------------------是看linux当前目录下的文件。
lcd ------------------修改本地保存路径--巧记local+cd

 

------------------sftp在xshell工具中使用------------------

 

默认是用传输ssh协议,把它更改为sftp协议

(前题是这个目标IP装了sftp服务端)

1、建立连接


然后连接确定,根据提示输入保存账号即可。

2、常用命令


get 文件名 ------------------下载文件
put 文件名 ------------------上传文件
pwd  ------------------是看远端服务器的目录, 即sftp服务器默认的当前目录。 
 lpwd  ------------------是看linux本地目录。
ls  ------------------是看sftp服务器下当前目录下的文件,
 lls  ------------------是看linux当前目录下的文件。
lcd ------------------修改本地保存路径--巧记local+cd

-------------------sftp和ssh协议的区别-------------------


一 sftp 协议

SFTP协议工作于OSI七层体系的应用层.sftp是一个加密传输协议
SFTP协议能够进行“远程文件获取,文件内容传输,文件管理”等操作.它的控制信号和数据信号的传输通过安全数据通道进行。一般情况下,这个安全数据通道由SSH连接提供,即SSH连接隧道作为安全数据通道。

SFTP协议分为两个端,分别是SFTP Client和SFTP Server。


二 SSH协议

传输层协议 ,Secure Shell 缩写,
ssh的作用:可以替代Telnet,也可以为FTP,Pop,甚至PPP提供安全的通道。

-------------------sftp基础-------------------

sftp 是 Secure File Transfer Protocol 的缩写,安全文件传送协议

一、sftp 搭建

(1) 创建 sftp 组

groupadd sftp
# -g 用户组; -d 指定家目录; -s 不登陆; -M 不创建家目录 
useradd -g sftp -d /data/sftp/sftpuser -s /sbin/nologin sftpuser
echo 123456 | passwd --stdin sftpuser

(2) 修改 sshd_config 配置

vim /etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp

# 下面两项是与安全有关
AllowTcpForwarding no
X11Forwarding no
  • Match Group sftp 这一行是指定以下的子行配置是匹配 sftp 用户组的。Match user userA,userB 则是匹配用户。
  • ChrootDirectory /data/sftp/%u 设定属于用户组 sftp 的用户访问的根文件夹。%h 代表用户 home 目录,%u 代表用户名。
  • ForceCommand internal-sftp 该行强制执行内部 sftp,并忽略任何 ~/.ssh/rc 文件中的命令。
  • AllowTcpForwarding no 是否允许 TCP 转发,默认值为 "yes", 禁止 TCP 转发并不能增强安全性,除非禁止了用户对 shell 的访问,因为用户可以安装他们自己的转发器。
  • X11Forwarding no 是否允许进行 X11 转发。默认值是 "no",设为 "yes" 表示允许。如果允许 X11 转发并且 sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用 X11 转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止 X11 转发并不能禁止用户转发 X11 通信,因为用户可以安装他们自己的转发器。

(3) 权限设置

要实现 Chroot 功能, 目录权限的设置非常重要 。否则无法登录,给出的错误提示也让人摸不着头脑,无从查起。我在这上面浪费了很多时间。

ChrootDirectory:定义了用户通过认证以后的 chroot 目录,此目录及其所有子目录的属主必须是 root,且这些目录只有 root 帐号可以进行写操作,其他任何组和帐号都不可写。chroot 以后,sshd 会将用户的工作目录转到 chroot 目录中用户自己的主目录。如果 ChrootDirectory 定义的目录下没有相应的 /home/username 目录,则会直接转到 chroot 的 / 目录下。

chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser

目录权限设置上要遵循2点:

  • ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,属主和属组必须是 root;
  • ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是 755。

(4) 建立 SFTP 用户可写目录

由于 /data/sftp/sftpuser 的用户是 root,其它用户都没有写的权限,所有要有该目录下新建一个目录用于文件的上传下载。

mkdir -p /data/sftp/sftpuser/upload
chown sftpuser:sftp /data/sftp/sftpuser/upload
chmod 755 /data/sftp/sftpuser/upload

(5) 测试

sftp -P2022 sftpuser@172.16.16.126
sftp> pwd
Remote working directory: /upload
sftp> lls
1  anaconda-ks.cfg  zookeeper.out
sftp> put anaconda-ks.cfg 
Uploading anaconda-ks.cfg to /upload/anaconda-ks.cfg
anaconda-ks.cfg                                         100% 1839    39.4KB/s   00:00    

二、SFTP 配置

2.1 MaxStartups 1000:30:3000

同时允许几个尚未登入的联机画面,所谓联机画面就是在你 ssh 登录的时候,没有输入密码的阶段

MaxStartups 10:30:100    # start:rate:full
  • start:表示未完成认证的连接数
  • rate:当未完成认证的连接数超过 start 时,rate/100 表示新发起的连接有多大的概率被拒绝连接。
  • full:如果未完成认证的连接数达到 full,则新发起的连接全部拒绝。

查看 sshd 配置参数:

sshd -T | grep -i startup

2.2 maxsessions 1000

同一地址的最大连接数,也就是同一个 IP 地址最大可以保持多少个链接。

如下以上两个参数配置不正确,可能出现如下错误:

ssh_exchange_identification: Connection closed by remote host

《SSH 服务的几个超时参数配置》: https://yq.aliyun.com/articles/57903?spm=5176.11156381.0.0.68684403ani1fa

三、踩过的坑

问题 1: Couldn't read packet: Connection reset by peer

sftp 输入密码后报错:

[root@sdw1 ~]# sftp sftpuser@sdw1
sftpuser@sdw1's password: 
packet_write_wait: Connection to 192.168.2.111 port 22: Broken pipe
Couldn't read packet: Connection reset by peer
[root@sdw1 ~]# sftp sftpuser@sdw1
sftpuser@sdw1's password: 
Connected to sdw1.

原因:/data/sftp/sftpuser(ChrootDirectory) 的用户必须为 root,参考 sftp 安装 (3)

chown root:sftp /data/sftp/sftpuser

问题 2: remote readdir("/"): Permission denied

sftp 登陆成功后,没有读的权限

sftp> ls
remote readdir("/"): Permission denied

原因:/data/sftp/sftpuser(ChrootDirectory) 组 sftp 必须要有读的权限,参考 sftp 安装 (3)

chmod 755 /data/sftp/sftpuser


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java_爱吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值