CentOS7 SFTP服務安裝和使用
- 一、SFTP簡介
- 二、FTP和SFTP的區別
- 三、SFTP使用配置
- 1. 使用環境說明
- 2. 配置程序
- 2.1 查看主機ssh服務
- 2.2 創建SFTP根目錄
- 2.3 創建SFTP子目錄
- 2.4 創建用戶組sftp
- 2.5 創建用戶組sftp用戶
- 2.6 用戶 sftpPhotoUser 設定密碼
- 設定SFTP根目錄和子目錄用戶權限
- 2.7 修改ssh組態檔 sshd_config
- 2.8 重啟ssh服務配置更新生效
- 2.9 驗證SFTP配置正確性
- 四、常見問題分析
- 1. sftp子目錄無創建檔案夾和檔案權限(寫入權限)
- 2. sftp用戶登錄失敗
- 3. sftp用戶用戶名密碼登錄不上
- 4. root用戶ssh登錄不上
一、SFTP簡介
sftp是一種安全的檔案傳送協議,是ssh內含協議,也就是說只要sshd服務器啟動了,sftp就可使用,不需要額外安裝,它的默認埠和SSH一樣為22,
二、FTP和SFTP的區別
- 鏈接方式:FTP使用TCP埠21上的控制連接建立連接,而,SFTP是在客戶端和服務器之間通過SSH協議(TCP埠22)建立的安全連接來傳輸檔案,
- 安全性:SFTP使用加密傳輸認證資訊和傳輸的資料,所以使用SFTP相對于FTP是非常安全,
- 效率:SFTP這種傳輸方式使用了加密解密技術,所以傳輸效率比普通的FTP要低得多,
三、SFTP使用配置
1. 使用環境說明
- 阿里云ECS CentOS7.8
- ssh版本 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan
2017 - root用戶操作
- 設定單目錄單用戶檔案上傳的使用場景
- windows sftp客戶端使用WinSCP
2. 配置程序
大致分為用戶權限配置和ssh配置
2.1 查看主機ssh服務
檢查本機是否安裝ssh服務
[root@dev ~]# ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]
[root@dev ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-12-05 00:10:10 CST; 34min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1053 (sshd)
CGroup: /system.slice/sshd.service
└─1053 /usr/sbin/sshd -D
Dec 05 00:10:10 dev systemd[1]: Starting OpenSSH server daemon...
Dec 05 00:10:10 dev sshd[1053]: Server listening on 0.0.0.0 port 22.
Dec 05 00:10:10 dev systemd[1]: Started OpenSSH server daemon.
Dec 05 00:16:40 dev sshd[1350]: Accepted publickey for root from 58.101.144.8 port 50541 ssh2: RSA SHA256:M2X0YJHDJA898KsSYzkhAeyHzstZzPSOZFnLfT/M1j8
[root@dev ~]#
此情況說明當前主機已安裝ssh并且正在運行
2.2 創建SFTP根目錄
[root@dev /]# pwd
/
[root@dev /]# mkdir data
[root@dev /]# cd data
[root@dev data]# mkdir sftp
[root@dev data]# cd sftp/
[root@dev sftp]# pwd
/data/sftp
2.3 創建SFTP子目錄
[root@dev sftp]# mkdir myPhoto
[root@dev sftp]# pwd
/data/sftp
[root@dev sftp]# ls
myPhoto
[root@dev sftp]# cd myPhoto/
[root@dev myPhoto]# pwd
/data/sftp/myPhoto
2.4 創建用戶組sftp
[root@dev myPhoto]# groupadd sftp
[root@dev myPhoto]#
2.5 創建用戶組sftp用戶
[root@dev myPhoto]# useradd -g sftp -d /data/sftp/myPhoto -M -s /sbin/nologin sftpPhotoUser
[root@dev myPhoto]# id sftpPhotoUser
uid=1000(sftpPhotoUser) gid=1000(sftp) groups=1000(sftp)
引數說明
-g 新建用戶的分組
-d 用戶根目錄
-M 不生成用戶的home目錄
-s 禁止用戶使用ssh登錄
2.6 用戶 sftpPhotoUser 設定密碼
[root@dev myPhoto]# passwd sftpPhotoUser
Changing password for user sftpPhotoUser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@dev myPhoto]#
設定SFTP根目錄和子目錄用戶權限
[root@dev ssh]# chown root:sftp /data/sftp #設定目錄擁有者為root和sftp用戶組
[root@dev ssh]# chmod 755 /data/sftp #設定目錄權限擁有者7,組為5,其他為5
[root@dev sftp]# chown sftpPhotoUser:root -R /data/sftp/myPhoto #設定擁有者為用戶sftpPhotoUser、用戶組root
[root@dev sftp]# chmod 775 -R /data/sftp/myPhoto #設定擁有者為rwx,擁有組rwx,其他r-x
[root@dev ssh]#
關于chown、chmod可參考此文獻
2.7 修改ssh組態檔 sshd_config
[root@dev myPhoto]# cd /etc/ssh
[root@dev ssh]# ls
moduli sshd_config ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub
ssh_config ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
[root@dev ssh]# cp sshd_config sshd_config_bak
[root@dev ssh]# ls
moduli sshd_config ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
ssh_config sshd_config_bak ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub
[root@dev ssh]# vi sshd_config
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server 注釋此行
Subsystem sftp internal-sftp #新加入
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
UseDNS no
AddressFamily inet
SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication no
#以下代碼塊新加入,請一定要放在檔案末尾處,否則root用戶無法ssh登錄
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /data/sftp
ForceCommand internal-sftp
2.8 重啟ssh服務配置更新生效
[root@dev ssh]# sshd -t #此處測驗組態檔
[root@dev ssh]# systemctl restart sshd
[root@dev ssh]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-12-05 01:24:45 CST; 6s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 11169 (sshd)
CGroup: /system.slice/sshd.service
└─11169 /usr/sbin/sshd -D
Dec 05 01:24:45 dev systemd[1]: Starting OpenSSH server daemon...
Dec 05 01:24:45 dev sshd[11169]: Server listening on 0.0.0.0 port 22.
Dec 05 01:24:45 dev systemd[1]: Started OpenSSH server daemon.
[root@dev ssh]#
2.9 驗證SFTP配置正確性
[root@dev sftp]# sftp sftpPhotoUser@127.0.0.1
sftpPhotoUser@127.0.0.1's password:
Connected to 127.0.0.1.
sftp> ls
myPhoto
sftp> cd myPhoto/
sftp> ls
新建檔案夾
sftp> mkdir img
sftp> ls
img 新建檔案夾
四、常見問題分析
1. sftp子目錄無創建檔案夾和檔案權限(寫入權限)
[root@dev sftp]# sftp -P 22 sftpPhotoUser@127.0.0.1
sftpPhotoUser@127.0.0.1's password:
Connected to 127.0.0.1.
sftp> ls
sftp> myPhoto
sftp> cd myPhoto
sftp> mkdir 新建檔案夾
Couldn't create directory: Permission denied
原因分析:myPhoto沒有寫入權限
解決方法:添加寫入權限
[root@dev sftp]# chown sftpPhotoUser:root -R /data/sftp/myPhoto #設定擁有者為用戶sftpPhotoUser、用戶組root
[root@dev sftp]# chmod 775 -R /data/sftp/myPhoto #設定擁有者為rwx,擁有組rwx,其他r-x
2. sftp用戶登錄失敗
[root@dev ssh]# sftp -P 22 sftpPhotoUser@127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:j3ETVQNx0Iaii+D1W7Gom/PPZQutw67lmxAomJj2x9Q.
ECDSA key fingerprint is MD5:af:01:09:9f:68:16:3d:37:cf:e3:7c:f4:0b:6b:f7:77.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Couldn't read packet: Connection reset by peer
[root@dev ssh]#
原因分析:sftp根目錄所有者問題
解決方法:sftp根目錄所有者設定為root用戶
[root@dev ssh]# chown root:sftp /data/sftp #設定目錄擁有者為root和sftp用戶組
3. sftp用戶用戶名密碼登錄不上
原因分析:組態檔配置問題
解決方法:密碼登錄設定項設定為yes
PasswordAuthentication yes
4. root用戶ssh登錄不上
原因分析:組態檔配置問題
解決方法:此文本塊放置/ect/ssh/sshd_config檔案末尾
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /data/sftp
ForceCommand internal-sftp
歡迎大家踴躍留言,我將持續收錄大家遇到的問題!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231542.html
標籤:其他
上一篇:C++ 浮點數精度判定
