目录
- 1 SFTP安装
-
- 1.1 sftp说明
- 1.2 目标
- 1.3 安装
-
- 1、sftp用户、用户组的创建
-
- 添加sftp用户,创建 sftp 用户组
- 创建sftp服务器的管理员身份,并且加入 ssh用户组(不限制他的shell操作权限)
- 2、创建文件服务器目录
-
- 创建服务器文件目录
- 3、权限配置
- 4、重启ssh
- 5、测试
- 2 常用命令
-
- 2.1 sftp 登录sftp服务器
- 2.2 pwd和lpwd 、 ls和lls 、cd和lcd 等
- 2.3 !command 命令
- 2.4 putget 命令,同步文件命令
- 2.5 exit/quit/!退出登录
1 SFTP安装
1.1 sftp说明
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统。 SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果对网络安全性要求更高时,可以使用SFTP代替FTP。
1.2 目标
在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。
但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。
系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。
1.3 安装
Ubuntu默认只安装openssh-client,需要手动安装openssh-server或者sftp-server。
sudo ssh -V # 查看openssh的版本,要求版本高于4.8p1,低于此版本需升级 sudo apt update sudo apt install openssh-server
1、sftp用户、用户组的创建
添加sftp用户,创建 sftp 用户组
sudo adduser shuoshuo # 密码均为:N3URQ%JWcd7K0K*2HAWDtWb sudo addgroup sftp-users # 将shuoyao从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问 #/bin/false也可以替换为/sbin/nologin,目的是不允许该用户登录到系统中 sudo usermod -G sftp-users -s /bin/false shuoshuo
创建sftp服务器的管理员身份,并且加入 ssh用户组(不限制他的shell操作权限)
sudo adduser admin # admin密码:ApaCloud@0608 sudo addgroup ssh-users # -a 表示以追加形式将 admin 加入 ssh-users sudo usermod -a -G ssh-users admin # 如果不添加的话,等权限配置完成后,则无法远程登录 # 如果不需要登录,则可以不执行以下语句 sudo usermod -a -G ssh-users ubuntu
2、创建文件服务器目录
创建服务器文件目录
# 创建目录 sudo mkdir /home/sftp_root # 普通用户能够写入的共享文件目录 sudo mkdir /home/sftp_root/shared # 设置共享文件夹的拥有者为管理员、用户组为 sftp-users sudo chown admin:sftp-users /home/sftp_root/shared # 拥有者、sftp用户组的成员具有一切权限 sudo chmod 770 /home/sftp_root/shared
3、权限配置
sudo vim /etc/ssh/sshd_config # 修改sftp上传文件端口 Port 5022 # 在sshd_config文件的最后 AllowGroups ssh-users sftp-users Match Group sftp-users ChrootDirectory /home/sftp_root AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp
参数说明:
- AllowGroups ssh-users sftp-users:这个指令允许 ssh-users 和 sftp-users 两个用户组登录 SSH 服务器。
- Match Group sftp-users:这个指令开始匹配 sftp-users 用户组,并在该组下面的指令中应用相应的设置。
- ChrootDirectory /home/sftp_root:这个指令指定了 sftp-users 组用户的主根目录。当这些用户登录时,他们会被切换到这个目录,并且无法访问其他目录。
- AllowTcpForwarding no:这个指令禁止在 SSH 会话中使用 TCP 端口转发
- X11Forwarding no:这个指令禁止在 SSH 会话中使用 X11 图形会话转发。
- ForceCommand internal-sftp:这个指令强制 sftp-users 组用户在 SSH 会话中使用 internal-sftp 命令,而不是默认的 bash 或其他 shell。这有助于限制这些用户的操作,使他们只能使用 SFTP 客户端进行文件传输。
注意:
- ChrootDirectory的权限问题,设定的目录必须是root用户所有,否则就会出现问题。所以需要确保sftp用户根目录的所有人是root, 权限是 750 或者 755。
- 默认允许所有用户或者用户组登录,若仅允许指定用户或者用户组访问,按照以下格式配置。
# 以空格间隔 AllowUsers user1 user2 AllowGroups group1 group2 # 做好以上配置后,所有需要远程连接的用户都必须加入 ssh-users 才行。 # 如将用户 songyangji 加入 ,执行以下语句就可以使用ssh连接本机。 sudo usermod -a -G ssh-users admin
- 限制ssh连接的访问IP(可选)
sudo vim /etc/ssh/sshd_config # Authentication: AllowUsers [email protected].* #限制root用户只能通过10.10.10.*网段登录访问 AllowUsers [email protected].* #限制charles用户只能通过10.10.10.*网段登录访问 AllowUsers [email protected].*
4、重启ssh
sudo systemctl restart sshd
5、测试
sftp -P 5022 [email protected]
2 常用命令
2.1 sftp 登录sftp服务器
sftp -P 5022 [email protected] # 进入sftp后,使用help可以查看全部命令
2.2 pwd和lpwd 、 ls和lls 、cd和lcd 等
sftp登录之后默认操作是远程服务器,当需要操作本地时,就需要在前边加“l”,“l”代表local的意思。这样就可以同时在远程和本地实现对应的操作。
pwd:sftp服务器的目录 lpwd:本地服务器的目录 ls和lls同理
2.3 !command 命令
使用!command执行本地命令,例如lrm 不能删除本地文件,会提示错误:
2.4 putget 命令,同步文件命令
put:从本地推送文件到远程;
get:从远程拉取文件到本地;