OS:Ubuntu 22.04 Server
目的:
- 使用加密連線
- 使用 SFTP 協定登入 OpenSSH 伺服器時,預設使用者可以任意的在檔案系統間遊走,因安全的理由透過 chroot() 的方法將使用者限制在(chroot) 特定目錄下,讓他不能跑到其他目錄瀏覽資料。
- 設定完成之帳號,僅可使用SFTP 協定登入,無法使用ssh登入。
步驟:
1.確認openssh版本>4.8
$ ssh -V
2.建立SFTP用群組
$ sudo groupadd sftp_group
3.將使用者加入SFTP用群組
$ sudo usermod -G sftp_group <使用者帳號>
4.查帳號是否正確加入群組
$ grep sftp_group /etc/group
5.確認home目錄與有者權限為root:root,755。
$ ls -ld /home
drwxr-xr-x 8 root root 4096 May 10 01:08 home
6.確認使用者home目錄與有者權限為root,755。
$ ls -ld /home/<使用者帳號>
drwxr-xr-x 6 root <使用者帳號> 4096 Apr 10 03:47 <使用者帳號>
$ sudo chown root /home/<使用者帳號>
7.禁止使用者以ssh登入shell
$ sudo vim /etc/shells
加入/bin/false
$ sudo usermod -s /bin/false <使用者帳號>
8.設定SSH Config檔案
$ sudo vim /etc/ssh/sshd_config
#Subsystem sftp /usr/lib/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
Match Group sftp_group
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp
9.測試config後重啟sshd
$ sudo sshd -t
$ sudo systemctl restart sshd
10使用FileZilla以22port連線測試