? 上一篇下一篇 ?

【linux系統】香港服務器中如何配置ssh/sftp和權限設置

  SSH是Secure Shell的縮寫。通過使用SSH,可以把所有傳輸的數據進行加密,而且能夠防止DNS欺騙和IP欺騙。使用SSH,還可以將傳輸的數據壓縮,所以可以加快傳輸的速度。SSH可以為FTP提供一個安全的“通道”。

  SSH協議是建立在應用層和傳輸層基礎上的安全協議,它主要由以下三部分組成,共同實現SSH的安全保密機制。 傳統FTP 在傳輸機制和實現原理上是沒有考慮安全機制的,因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,別有用心的人非常容易地就可以截獲這些數據、用戶帳 號和用戶口令。而且,這些網絡服務程序容易受到“中間人”(man-in-the-middle)這種攻擊方式的攻擊。所謂“中間人”的攻擊方式,就是" “中間人”冒充真正的服務器接收你的傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”做了手腳之后,就會出 現很嚴重的問題。

基于 ssh 的 sftp 服務相比 ftp 有更好的安全性(非明文帳號密碼傳輸)和方便的權限管理(限制用戶的活動目錄)。
 
1、開通 sftp 帳號,使用戶只能 sftp 操作文件, 而不能 ssh 到服務器
 
2、限定用戶的活動目錄,使用戶只能在指定的目錄下活動,使用 sftp 的 ChrootDirectory 配置
 
確定版本

 

香港服務器中如何配置ssh/sftp和權限設置

#確保 ssh 的版本高于 4.8p1 否則升級一下 一般都高于這個版本
 ssh -V
 
新建用戶和用戶組
 


#添加用戶組 sftp
groupadd sftp
 #添加用戶 指定家目錄 指定用戶組 不允許shell登錄
 useradd -d /home/sftp -m -g sftp -s /bin/false sftp
 #設置用戶密碼
 passwd sftp
 
活動目錄
 


#設定你想要限定的活動目錄
 mkdir -p /var/www/sftp
 #配置權限 注意此目錄如果用于后續的 chroot 的活動目錄 目錄所有者必須是 root 必須是?。?!
 chown root.sftp /var/www/sftp
 

香港服務器中如何配置ssh/sftp和權限設置

基本的 ssh 配置
 


# ssh 服務的配置文件
 vi /etc/ssh/sshd_config
 
#基本的ssh遠程登錄配置
 #開啟驗證
 PasswordAuthentication yes
 #禁止空密碼登錄
 PermitEmptyPasswords no
 #開啟遠程登錄
 PermitRootLogin yes
 
至此你就可以使用 ssh 遠程登錄服務器了
 
配置 sftp
 


#這里我們使用系統自帶的 internal-sftp 服務即可滿足需求
 #Subsystem      sftp    /usr/libexec/openssh/sftp-server
 Subsystem      sftp    internal-sftp
 
Subsystem
 
Subsystem 是說 ssh 的子模塊 這里啟用的即為 sftp 模塊,我們使用系統自帶的 internal-sftp 來提供此服務,其實配置到這你即可以使用帳號 ssh 登錄,也可以使用 ftp 客戶端 sftp 登錄。
 
如果你希望用戶只能 sftp 而不能 ssh 登錄到服務器,而且要限定用戶的活動目錄,繼續看下面的配置
 


#對登錄用戶的限定
 Match Group sftp
     ChrootDirectory /var/www/sftp # 還可以用 %h代表用戶家目錄 %u代表用戶名
     ForceCommand    internal-sftp # 強制使用系統自帶的 internal-sftp 服務 這樣用戶只能使用ftp模式登錄
     AllowTcpForwarding no
     X11Forwarding no
  

【linux系統】香港服務器中如何配置ssh/sftp和權限設置Match [User|Group] userName|groupName
 
Match [User|Group] sftp    這里是對登錄用戶的權限限定配置 Match 會對匹配到的用戶或用戶組起作用 且高于 ssh 的通項配置
 
ChrootDirectory    用戶的可活動目錄 可以用 %h 標識用戶家目錄 %u 代表用戶名 當 Match 匹配的用戶登錄后 會話的根目錄會切換至此目錄 這里要尤其注意兩個問題
 
1、 chroot 路徑上的所有目錄,所有者必須是 root,權限最大為 0755,這一點必須要注意而且符合 所以如果以非 root 用戶登錄時,我們需要在 chroot 下新建一個登錄用戶有權限操作的目錄
 
2、chroot 一旦設定 則相應的用戶登錄時會話的根目錄 "/" 切換為此目錄,如果你此時使用 ssh 而非 sftp 協議登錄,則很有可能會被提示:
 

/bin/bash: No such file or directory
 
這則提示非常的正確,對于此時登錄的用戶,會話中的根目錄 "/" 已經切換為你所設置的 chroot 目錄,除非你的 chroot 就是系統的 "/" 目錄,否則此時的 chroot/bin 下是不會有 bash 命令的,這就類似

添加用戶時設定的 -s /bin/false 參數,shell 的初始命令式 /bin/false 自然就無法遠程 ssh 登錄了
 
ForceCommand    強制用戶登錄會話時使用的初始命令 如果如上配置了此項 則 Match 到的用戶只能使用 sftp 協議登錄,而無法使用 ssh 登錄 會被提示
 This service allows sftp connections only.
 
配置完成 重啟 sshd 服務
 

service sshd restart
 
注意:
 
1、chroot 可能帶來的問題,因為 chroot 會將會話的根目錄切換至此,所以 ssh 登錄很可能會提示 /bin/bash: No such file or directory 的錯誤,因為此會話的路徑會為 chroot/bin/bash
 
2、ForceCommand 為會話開始時的初始命令 如果指定了比如 internal-sftp,則會提示 This service allows sftp connections only. 這就如同 usermod -s /bin/false 命令一樣,用戶登錄會話時無法調用

/bin/bash 命令,自然無法 ssh 登錄服務器
以上就是關于SSH使用過程中遇到的問題