提供sftp服務的有vsftpd和internal-sftp,這裡用的是系統自帶的internal-sftp,操作步驟如下:
1.建立使用者yssftp,禁止ssh登入
useradd -s /sbin/nologin
yssftp
2.設定使用者密碼
passwd yssftp
3.建立使用者的根目錄
mkdir /home/sftpfile
4.設定許可權
設定目錄許可權,目錄的許可權設定有兩個要點:
目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root
目錄開始一直往上到系統根目錄為止都不可以具有群組寫入許可權
chown root:root /home/sftpfile
chmod
755 /home/sftpfile
5.配置sshd_config
vim /etc/ssh/sshd_config
#注釋掉這行
#subsystem sftp /usr/libexec/openssh/sftp-server
#新增在配置檔案末尾
subsystem sftp internal-sftp #指定使用sftp服務使用系統自帶的internal-sftp
match user www #匹配使用者,如果要匹配多個組,多個組之間用逗號分割
chrootdirectory /home/sftpfile #用chroot將指定使用者的根目錄,chroot的含義
forcecommand internal-sftp #指定sftp命令
x11forwarding no
#這兩行,如果不希望該使用者能使用埠**的話就加上,否則刪掉
allowtcpforwarding no
6.重啟sshd服務
service sshd restart
7.使用者登入後進入的是/home/sftpfile即使用者根目錄,根目錄是無法寫入的,所以先用root在/home/sftpfile新建乙個upfile目錄
mkdir /home/sftpfile/upfile
8.修改目錄所有者和許可權
chown upfile
:upfile/home/sftpfile/upfile
chmod 777 /home/sftpfile/upfile
測試登入
sftp -oport=22 sftpfile@host
常見檔案修復
將這段文字放在配置檔案前面
2.
couldn't read packet: connection reset by peer
這個問題的原因是chrootdirectory的許可權問題,你設定的目錄必須是root使用者所有,否則就會出現問題。所以請確保sftp使用者根目錄的所有人是root, 許可權是 750 或者 755
linux建立sftp賬號及訪問許可權
首先 你的openssh server版本至少得是4.8p1,因為配置許可權需要版本新增的新配置項chrootdirectory來完成。如何檢視自己伺服器上的ssh版本?大家可以嘗試以下命令 ssh v 步驟 1.我們需要建立乙個使用者組,專門用於sftp使用者 groupadd sftpusers...
sftp賬號建立和許可權設定
操作前需先開啟telnet服務,防止修改sshd config後,sshd服務啟不了 systemctl start telnet.socket建立sftpusers使用者組,專門用於sftp使用者 groupadd sftpusers建立test使用者,將test使用者的shell設定為 sbin...
SSH新增sftp賬號和限制目錄
第1步 新增sftp賬號 useradd m d data www www.com s sbin nologin g root user1 第2步 設定賬號密碼 passwd user1 第3步 修改 etc passwd,將剛新增的使用者級別設定為0.例如 user1 x 1001 0 data ...