如图所示:

C主机上有一个共享目录,通过A主机远程的B主机上执行复制C主机上的这个共享目录到B主机,这种情况叫做多跳授权方式。

凭据安全服务提供者(CredSSP,Credential Security Service Provider)是全新的安全服务提供者,用于将用户凭据委派到应用程序中,以实现从客户端到目标服务器的认证。Windows 远程管理(WinRM,Windows Remote Management)支持的多跳(Multi-hop)使用CredSSP实现认证。从PowerShell 2.0开始,远程管理是构建于WinRM的,所以可以使用CredSSP实现多跳授权。

使用Credssp认证处理多跳授权_第1张图片

举例说明:我们部署一个zabbix agent共享目录以期批量部署。但远程复制的过程失败了如下图 所示:

p_w_picpath

命令是从远程线程尝试访问文件共享时出错的,由于使用的是主机A访问主机B时使用的主机B的凭据,而不是主机B访问文件服务器主机C时使用的凭据。所以可以推测如果能有方法从客户端主机A传递或委派可访问文件服务器主机C的凭据就能成功创建目标文件,这就是为何称之为多跳授权以及PowerShell远程管理通过CredSSP实现多跳授权,下面就引入委派凭据的概念:

委派凭据  
用于创建远程线程的cmdlet——Invoke-Command,Enter-PSSession和New-PSSession都有一个-Authentication参数用于将授权模式指定为CredSSP。而在使用这个参数之前,需要首先在参与多跳授权的多台主机上启用CredSSP,而在启用CredSSP之前需要指定角色——Client或者Server——当然Client是远程线程初始化的主机,也就是这里的主机A;Server是多跳授权触发的主机,相当于跳板,也就是这里的主机B。

PowerShell 2.0提供了如下的cmdlet用于管理CredSSP授权:

1. Enable-WSManCredSSP

2. Disable-WSManCredSSP

3. Get-WSManCredSSP

成功举例

域环境:

1A主机被远程端:

Enable-WSManCredSSP -role server

使用Credssp认证处理多跳授权_第2张图片

2 B主机远程端:

Enable-WSManCredSSP -role client -DelegateComputer "lyncent01"

3 C主机上有一个zabbix2.2.2的共享目录

4 在B主机上执行远程复制操作:

p_w_picpath

发现A主机上已经有了说明复制成功了:

使用Credssp认证处理多跳授权_第3张图片