ws2019添加sftp用户步骤
# ws2019添加sftp用户步骤
前景:
我希望你能生成一个完整的脚本
用户是:zzl
密码是:123456
文件夹路径:D:\zzl
这个文件夹只允许zzl用户使用,zzl对此文件夹拥有所有权限
1
2
3
4
5
6
2
3
4
5
6
# 完整 PowerShell 脚本(以管理员身份运行)
# 1. 安装 OpenSSH Server(如果尚未安装)
$cap = Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
if ($cap.State -ne 'Installed') {
Write-Host "正在安装 OpenSSH Server..."
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
}
# 2. 启动并设置服务为自动启动
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# 3. 创建 SFTP 用户 zzl
Write-Host "正在创建用户 zzl..."
net user zzl "123456" /add
# 4. 创建 SFTP 根目录和数据目录
$rootDir = "D:\zzl"
$dataDir = "$rootDir\upload"
Write-Host "创建目录: $dataDir"
New-Item -ItemType Directory -Path $dataDir -Force | Out-Null
# 5. 设置目录权限
Write-Host "配置根目录权限..."
icacls $rootDir /inheritance:r
icacls $rootDir /grant "Administrators:F"
icacls $rootDir /remove "zzl"
Write-Host "配置数据子目录权限..."
icacls $dataDir /inheritance:r
icacls $dataDir /grant "zzl:M"
# 6. 修改 sshd_config 文件
$configPath = "C:\ProgramData\ssh\sshd_config"
$matchBlock = @"
Match User zzl
ChrootDirectory $rootDir
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
"@
# 确保配置项不存在重复
$content = Get-Content $configPath
if ($content -notmatch "Match User zzl") {
Add-Content -Path $configPath -Value "`r`n$matchBlock"
Write-Host "已添加 SFTP 配置到 sshd_config"
} else {
Write-Host "配置已存在,跳过添加"
}
# 7. 重启 sshd 服务
Restart-Service sshd
Write-Host "✅ 配置完成:zzl 只能通过 SFTP 访问 $dataDir"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55