Debian9.5下sftp配置和scp用法
基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录)。
1、如果只想让某些用户只能使用 sftp 操作文件, 而不能通过ssh进行服务器的管理,就需要先创建只能进行 sftp操作的帐号户(账户名随便起),如果sftp和ssh功能都需要,那么本地用户就可以,不需要新建。
2、限定用户的活动目录,使用户只能在指定的目录下活动,通过/etc/ssh/sshd_config配置文件的 ChrootDirectory 选项进行设置,需要进行ssh管理的帐号不要添加这个选项,添加完了以后ssh会不能登录,后面会说明。
一、新建用户和用户组
我们先添加用户名为test的用户和组名为test的组,只能进行 sftp操作的帐号户
#添加用户组 gtest
root@debian:~# groupadd gtest
#添加用户test 指定家目录 指定用户组
root@debian:~# useradd -d /home/test -m -g gtest test
如果只允许用户进行sftp操作,可以在命令后面加上-s /bin/false参数
#设置用户密码
root@debian:~# passwd test
二、设定你想要限定的活动目录
root@debian:~# mkdir /home/sftp
#配置权限 注意此目录如果用于后续的 chroot 的活动目录,目录开始一直往上到系统根目录为止的目录拥有者都只能是root!!!
root@debian:~# chown root /home/sftp/ #其实这个是不必要的因为我是用root创建的用户
三、用户既可以sftp传输文件又能 ssh 登录到服务器的配置方法
开启ssh服务的sftp子系统,添加下面选项中的一个到配置文件/etc/ssh/sshd_config不可以同时添加
root@debian:~#vi /etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server #此选项默认已经存在
Subsystem sftp internal-sftp #此选项默认不存在
Subsystem选项的作用
配置外部子系统(例如文件传输守护程序)。参数应该是子系统名称(sftp)和在子系统请求时执行的命令(带有可选参数)。
如果命令为/usr/lib/openssh/sftp-server则sftp以独立进程的方式运行sftp服务。会在服务器上为sftp开启一个独立的进程,默认的选项,当客户端通过sftp命令登录服务器的时候,在服务器上可以查看到相应的进行:
-----------------------------------------
root@debian:~# ps -A | grep sftp
1502 ? 00:00:00 sftp-server
-----------------------------------------
如果命令为internal-sftp 则sftp以ssh进程内方式运行sftp服务,不用为 sftp 再开一个进程,此时当客户端通过sftp命令登录服务器的时候,在服务器上就查看不到相应的进行了,不是默认的选项,需要先删除或注释掉默认选项,如果启用ChrootDirectory选项(限定用户的活动目录)就必须用这个命令,要不然就会在客户端通过sftp命令登录时候提示下面的错误:
-----------------------------------------
pipci@ubuntu:~$ sftp laopi@192.168.1.139
laopi@192.168.1.139's password:
Connection closed
-----------------------------------------
添加上面其中的任何一个选项后,就可以正常的通过sftp传输文件了,同时ssh登录也是可以的。
四、如果希望用户只能sftp传输文件而不能 ssh 登录到服务器,而且要限定用户的活动目录(锁定用户的根目录),继续看下面的配置
配置/etc/ssh/sshd_config文件
-------------------------------------------------------------
#注释掉这行
#Subsystem sftp /usr/lib/openssh/sftp-server
#添加在配置文件末尾
Subsystem sftp internal-sftp #指定sftp以ssh进程内方式运行sftp服务
Match User test #该参数指定以下的行将仅仅匹配test用户
ChrootDirectory /home/sftp/ #用chroot将指定用户的根目录,有权限要求,看下面注释
ForceCommand internal-sftp #强制执行internal-sftp命令而忽略客户端提供的任何命令
--------------------------------------------------------------
1、Match选项的用法:
Match [User|Group] userName|groupName
Match后面可以是用户也可以是用户组,Match 会对匹配到的用户或用户组起作用,同时该选项只会对该行下面的选项进行匹配,不会对全局配置起作用。所以只有在这里添加的用户
并且下面的选项也加上,才只能sftp传输文件而不能 ssh 登录到服务器,例如上面的test用户,如果本地的用户没做其他限制还是可以ssh 登录到服务器。
2、ChrootDirectory选项的用法:
这个选项是用来设定用户的可活动目录,可以用 %h 标识用户家目录 %u 代表用户名 当 Match 匹配的用户登录后 会话的根目录会切换至此目录 这里要尤其注意下面几个问题
ChrootDirectory 目录开始一直往上到系统根目录为止的目录拥有者都只能是root,权限最大为 0755,这一点必须要注意而且符合 ,所以如果以非 root 用户登录时,我们需要在 ChrootDirectory 目录下新建一个登录用户有权限操作的目录
ChrootDirectory 一旦设定 则相应的用户(上面的例子为test用户)登录时会话的根目录 "/" 切换为此目录(如过不理解可以网上差下chroot的作用),如果此时相应的用户使用 ssh 而非 sftp 协议登录,则很有可能会被提示:
/bin/bash: No such file or directory
这则提示非常的正确,对于此时登录的用户,会话中的根目录 "/" 已经切换为你所设置的 chroot 目录,除非你的 chroot 就是系统的 "/" 目录,否则此时的 chroot/bin 下是不会有 bash 命令的,这就类似添加用户时设定的 -s /bin/false 参数,shell 的初始命令式 /bin/false 自然就无法远程 ssh 登录了
3、ForceCommand 选项的用法
这个选项用来强制执行这里指定的命令,忽略客户端提供的任何命令和脚本(如果存在),通常用于 Match 块中。 强制用户登录会话时使用的初始命令 如果如上配置了此项 则 Match 对应的用户只能使用 sftp 协议登录,而无法使用 ssh 登录 ,如果ssh登录会被提示
This service allows sftp connections only.
再次强调:
1、chroot 可能带来的问题,因为 chroot 会将会话的根目录切换至此,所以 ssh 登录很可能会提示 /bin/bash: No such file or directory 的错误,因为此会话的路径会为 chroot/bin/bash
2、ForceCommand 为会话开始时的初始命令 如果指定了比如 internal-sftp,则会提示 This service allows sftp connections only. 这就如同 usermod -s /bin/false 命令一样,用户登录会话时无法调用 /bin/bash 命令,自然无法 ssh 登录服务器
五、配置完成 重启 sshd 服务
root@debian:~# systemctl restart sshd.service
六、sftp命令用法:
1、登录到远程主机
pipci@ubuntu:~$ sftp user@ip
建立连接后, linux shell中的$提示符变成了sftp> 说明已经正常登录了。现在执行help, 可以看看sftp支持哪些命令。
2、切换路径
sftp> cd [路径] 切换远程主机的目录
sftp> lcd [路径] 切换本地主机的目录
2、显示目录列表
sftp> ls [选项] [路径] 显示远程主角目录列表
sftp> lls [选项] [路径] 显示本地主机目录列表
3、创建 删除目录
sftp> mkdir [目录名] 在远程主机创建目录
sftp> lmkdir [目录名] 在本地主机创建目录
sftp> rmdir [目录名] 在远程主机移除目录
sftp> lrmdir [目录名] 在本地主机移除目录
4、显示所在目录
sftp> pwd 显示远程主机工作目录
sftp> lpwd 显示本地主机工作目录
5、其他选项
sftp> rm 删除远程主机文件
sftp> version 显示协议版本
sftp> exit 退出 sftp
sftp> quit 退出 sftp
6、远程主机下载文件
sftp> get [-r] [远端主机目录或文件] [本地主机目录]
进行文件下载的sftp用户必须对本地主机的对应目录有写的权限,如果不指定本地主机目录则文件会存储到sftp登录时的本地当前目录。举例:下载文件
----------------------------------------------
sftp> get /test/tif /home/pipci
Fetching /test/tif to /home/pipci/tif
/test/tif 100% 5 0.0KB/s 00:00
----------------------------------------------
上面的复制成功,前提是sftp登录的用户必须对/home/pipci目录有写权限,如果要下载目录需要加上-r参数。
7、本地主机上传文件
sftp> put [-r] [本地主机目录] [远端主机目录或文件]
进行文件的上传的sftp用户必须对远程主机的对应目录有写的权限,如果不指定远程主机目录则文件会存储到sftp登录时的远程主机的当前目录。举例:上传文件
----------------------------------------------
sftp> put /home/pipci/Yozo_Officelog.txt /test
Uploading /home/pipci/Yozo_Officelog.txt to /test/Yozo_Officelog.txt
/home/pipci/Yozo_Officelog.txt 100% 2625 2.6KB/s 00:00
----------------------------------------------
上面的复制成功,前提是sftp登录的用户必须对/test目录有写权限,如果要上传目录需要加上-r参数。
七、使用scp进行远程文件复制
scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令。
有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的,但是
前提是复制的用户不能在ssh配置文件中设置chroot限制用户的根目录。如果设置了会提示/bin/sh: No such file or directory这样的错误。
scp命令用法:
上传文件
pipci@ubuntu:~$ scp [-rp] [本地主机文件或目录] [user@ip]:[远程主机目录]
下载文件
pipci@ubuntu:~$ scp [-rp] [user@ip]:[远程主机文件或目录] [本地主机目录]
参数说明:
-r :递归方式负责目录所有文件
-p :保留文件原有权限信息
-P : 制定连接的端口号,这个P为大写的P
举例上传文件:
-------------------------------------------------
pipci@ubuntu:~$ scp -r /home/pipci/tidd/ laopi@192.168.1.139:/home/laopi
laopi@192.168.1.139's password:
hs_err_pid15960.log 100% 91KB 90.7KB/s 00:00
hs_err_pid15147.log 100% 97KB 97.5KB/s 00:00
-------------------------------------------------
举例下载文件:
-------------------------------------------------
pipci@ubuntu:~$ scp -r laopi@192.168.1.139:/home/laopi/tidd /home/pipci/
laopi@192.168.1.139's password:
hs_err_pid17040.log 100% 98KB 97.5KB/s 00:00
hs_err_pid9006.log 100% 98KB 97.8KB/s 00:00
-------------------------------------------------
上传或下载重点在那个冒号(:),如果冒号两边都是文件或目录就是上传文件,如果冒号在文件或目录的左侧就是下载文件,冒号两边没有空格
注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
pipci@ubuntu:~$ scp -rp 8443 /home/pipci/tidd/ laopi@192.168.1.139:/home/laopi
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件或目录的权限。
Debian9.5下sftp配置和scp用法的更多相关文章
- CentOS6.9下sftp配置和scp用法
基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.如果只想让某些用户只能使用 sftp 操作文件, 而不能通过ssh进行服 ...
- win10下vscode配置sftp
sftp配置 1.在vscode中下载sftp插件 在vscode中快捷键 ctrl+shift+P 打开指令窗口,输入extension:install,回车,左侧即打开扩展安装的界面 在搜索框中 ...
- linux下ssh/sftp配置和权限设置
基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.开通 sftp 帐号,使用户只能 sftp 操作文件, 而不能 ssh ...
- 末学者笔记--SSHD服务及SCP用法
sshd服务讲解 1.SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 默认端口22 作用: sshd服务使用SS ...
- Centos下SFTP双机高可用环境部署记录
SFTP(SSH File Transfer Protocol),安全文件传送协议.有时也被称作 Secure File Transfer Protocol 或 SFTP.它和SCP的区别是它允许用户 ...
- Linux下远程cp命令scp
2014-2.19 PS1.在用此命令cpLinux与Linux之间的数据时发现有些服务器上默认没有安装scp但用yum -y install scp提示么有这样的包 后来发现原来scp工具的安装包 ...
- (转载)Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记
Linux下安装配置MySQL+Apache+PHP+WordPress的详细笔记 Linux下配LMAP环境,花了我好几天的时间.之前没有配置过,网上的安装资料比较混乱,加上我用的版本问题,安装过程 ...
- SVN 在 linux 下的配置
0.服务器主机需要打开websharing: sudo su (进入root,需要输入密码) apachectl start (没有反应即打开成功) 1.建立想要保存软件仓库的目录 最好在/users ...
- sftp配置多用户权限
sftp配置多用户权限 工作需要,用户上传文件到目录下,用ftp不太安全,选择sftp.让用户在自己的home目录下活动,不能ssh到机器进行操作. 下面开始干活. 查看ssh版本 ssh - ...
随机推荐
- [雅礼NOIP2018集训 day4]
感觉状态极差啊,今天居然爆零了 主要是以下原因: 1.又是T1看错题肝了两个小时,发现题意理解错误瞬间心态爆炸 2.T2交错了文件名 3.T3暴力子任务和正解(假的)混在一起,输出了两个答案 都想为自 ...
- 运维派 企业面试题6 防dos攻击
Linux运维必会的实战编程笔试题(19题) 企业实战题6:请用至少两种方法实现! 写一个脚本解决DOS攻击生产案例 提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到 ...
- POJ-1511 Invitation Cards 往返最短路 邻接表 大量数据下的处理方法
题目链接:https://cn.vjudge.net/problem/POJ-1511 题意 给出一个图 求从节点1到任意节点的往返路程和 思路 没有考虑稀疏图,上手给了一个Dijsktra(按紫书上 ...
- syn攻击原理与防护措施
何为syn攻击? 先普及下tcp3次握手的知识,在TCP/IP中,tcp协议提供可靠的socket连接服务,通过3次握手建立可靠连接. tcp3次握手过程: 第一阶段:某终端向服务器发送syn(syn ...
- vue-cli 打包 使用 history模式 的后端配置
apache的配置 这是windows下的 在httpd-vhosts.conf文件中把目录指向项目index.html文件所在的位置 # Virtual Hosts # <VirtualHos ...
- 【BZOJ 1269】 [AHOI2006]文本编辑器editor
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] /* [move k] 指令.直接 把pos改成k.表示改变光标位置 [insert n s],在pos后面插入一个长度为n的字符串 ...
- HDU 4725 The Shortest Path in Nya Graph
he Shortest Path in Nya Graph Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged o ...
- ASP.NET-跨站伪造请求CSRF
经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击,在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可Html.Ant ...
- vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)
P1543极值问题 Accepted 标签:[显示标签] 背景 小铭的数学之旅2. 描写叙述 已知m.n为整数,且满足下列两个条件: ① m.n∈1,2.-,K ② (n^ 2-mn-m^2)^2=1 ...
- CodedUI自己主动化測试及脱离VS独立执行
在VS中可创建"编码的UI測试".可录制软件操作,再回放,最后还能够脱离VS独立执行. 在VS中执行測试 创建项目codeuitest,控件布局.例如以下图: 在button单击事 ...