Linux(CentOS)上配置 SFTP

配置 sftp

相比傳統的 ftp 服務,SFTP 顯得更加方便、安全,通常系統安裝了 ssh 後,默認就安裝了這個服務,咱們只要簡單的配置一下就能夠了。html

可是 SFTP 帳號是基於 SSH 帳號的(也就是系統帳戶),默認狀況下訪問服務器的權限很大,下面的教程就是教你像 ftp 那樣限制 SFTP 帳號相關的訪問權限。shell

必要條件:

你的 openssh-server 版本至少得 4.8p1, 由於配置權限須要版本添加的新配置項 ChrootDirectory 來完成。安全

如何查看本身服務器上的ssh版本?嘗試如下命令服務器

$ ssh -V

具體實施步驟

  1. 咱們須要建立一個用戶組,專門用於sftp用戶ssh

$ groupadd sftpusers
  1. 咱們建立一個用戶test工具

$ useradd -s /bin/false -G sftpusers test

注意這裏咱們將test用戶的shell設置爲/bin/false使他沒有登錄shell的權限性能

  1. 編輯 /etc/ssh/sshd_config測試

找到Subsystem這個配置項,將其修改成.net

Subsystem  sftp  internal-sftp

爲何實用 internal-sftp 而不用默認的 sftp-server,這是由於:插件

  • 這是一個進程內的 sftp 服務,當用戶 ChrootDirectory 的時候,將不請求任何文件;

  • 更好的性能,不用爲 sftp 再開一個進程。

而後再到文件最尾處增長配置設定屬於用戶組sftpusers的用戶都只能訪問他們本身的home文件夾

# 匹配用戶組,若是要匹配多個組,多個組之間用逗號分割
Match Group sftpusers

# 指定登錄用戶到本身的用戶目錄
ChrootDirectory %h

# 指定 sftp 命令
ForceCommand internal-sftp

# 這兩行,若是不但願該用戶能使用端口轉發的話就加上,不然刪掉
X11Forwarding no
AllowTcpForwarding no

保存並關閉文件

  1. 修改test用戶home文件夾的權限,讓其屬於root用戶

chown root ~test
  1. 重啓sshd服務

$ service sshd restart

$ systemctl restart sshd
  1. 測試用戶帳號

$ ssh test@localhost

鏈接會被拒絕或者沒法登錄

$ sftp tesst@localhost

登錄後你會發現你的帳號沒法切換到除本身home目錄以外的地方的

常見問題:

若是你連接服務器的時候出現下面的提示:

> Write failed: Broken pipe     
> Couldn't read packet: Connection reset by peer

這個問題的緣由是ChrootDirectory的權限問題,你設定的目錄必須是root用戶全部,不然就會出現問題。因此請確保sftp用戶根目錄的全部人是root, 權限是 750 或者 755。注意如下兩點原則:

  • 目錄開始一直往上到系統根目錄爲止的目錄擁有者都只能是 root,用戶組能夠不是 root。

  • 目錄開始一直往上到系統根目錄爲止都不能夠具備羣組寫入權限

http://serverfault.com/questi...

配置sublime text3 的 sftp 插件

實用 st3 的包工具搜索安裝 sftp,具體能夠參加下面的文章:
sublime text3 安裝、配置sftp插件

"upload_on_save": true,
"sync_down_on_open": true,

"host": "xxx.com",
"user": "xxx",
"password": "xxx",
"port": "22",

"remote_path": "/xxx/xxx",

sftp 的 remote_path 和 ftp 不一樣,ftp 值得是遠程能看到的目錄和子目錄,sftp 指的是遠程服務器上的目錄路徑,如 /home/html。設置 upload_on_save 爲 true,將在你保存的時候自動上傳到服務器。設置 sync_down_on_open 爲 true,將在你打開本地文件編輯的時候,自動下載遠程文件來更新本地。

相關文章
相關標籤/搜索