浪歌 · 随笔 我的开发笔记

window服务器创建sftp服务

[window] 2024/7/30 14:52:19

SFTP(Secure File Transfer Protocol)是一种通过 SSH(Secure Shell)启用文件传输的网络协议。与传统的 FTP 不同,它提供了一种更加安全的传输方式,因为数据在传输过程中都经过了加密。

在window服务器上设置sftp参考以下步骤:

1. 安装OpenSSH服务

    用管理员身份打开powershell,然后依次执行命令:
    

// 安装ssh客户端和服务器
   Add-WindowsCapability -Online -Name OpenSSH.Client
   Add-WindowsCapability -Online -Name OpenSSH.Server

//启动ssh服务
   Start-Service sshd
   Start-Service ssh-agent

//设置ssh服务开机启动

   Set-Service -Name sshd -StartupType 'Automatic'
   Set-Service -Name ssh-agent -StartupType 'Automatic'

上面三个步骤如果没报错则往下执行,我在执行 Start-Service ssh-agent 提示: Start-Service 由于以下错误无法启动服务'OpenSH Authentication Agent',这里我更改启动类型,执行Set-Service -Name ssh-agent -StartupType Manual后,再启动服务就行了。


2. 配置防火墙,允许22端口能访问。 云服务器还需要在云服务器的控制面版中添加22入站规则。


3. 设置sftp用户及目录

    

//创建新用户sftpuser,含密码
net user sftpuser YourPassword /add

//添加用户到用户组,可以自己新建用户组,这里直接添加到users
//比如自定义用户组:New-LocalGroup -Name "sftpgroupusers"
net localgroup Users sftpuser /add

//设置用户对目录的权限,比如d:\sftp\sftpuser
icacls D:\SFTP\sftpuser /grant sftpuser:F /T

4. 配置sshd_config
  打开C:\ProgramData\ssh\sshd_config 文件编辑,在底部插入 
  
//代码如果存在可以删去 
Subsystem sftp  sftp-server.exe
     
//这里是需要的
     Match User sftpuser
         ChrootDirectory D:\SFTP
         ForceCommand internal-sftp
         AllowTcpForwarding no
         PermitTunnel no
         X11Forwarding no
  
5. 重启sshd服务:Restart-Service sshd
6. 使用winscp连接sftp,输入localhost或者服务器ip,端口号22,用户名和密码是之前设置的,然后连接就完成了。