使用 Kerberos 和 Linux KDC 的 Windows 7 NFS 客户端

使用 Kerberos 和 Linux KDC 的 Windows 7 NFS 客户端

我正在尝试配置 Windows 7 Enterprise 客户端以使用 Kerberos 和 Linux KDC 在 Linux NFS 服务器上挂载 NFSv4 共享。

设置如下:

  • IPA 服务器(操作系统:Scientific Linux 6.4,软件包:ipa-server)
  • NFS 服务器(操作系统:Scientific Linux 6.4,软件包:nfs-utils)
  • Windows 7 客户端(操作系统:企业版 64 位,功能:NFS 客户端)

脚步:

  1. 在 IPA 服务器上,为 Windows 客户端创建一个主体,并使用密码:

    ipa host-add --ip-address=10.10.0.100 win7ent-client.contoso.com
    ipa-getkeytab -s ipa.contoso.com -p host/win7ent-client.contoso.com -k win7ent-client.keytab -P
    ^
    | 
    This will create a principal and register the client with IPA server
    Set a random password - e.g. - jU96e3Urp6
    

    为客户端添加NFS服务:

    ipa 服务-添加 nfs/win7ent-client.contoso.com

  2. 在 Windows 客户端上:

    ksetup /setdomain CONTOSO.COM
    ksetup /setmachpassword <password set on step 1>
    ksetup /addrealmflags CONTOSO.COM sendaddress delegate
    ksetup /mapuser * *
    

    重新启动 Windows 客户端

    跑步:

    ksetup.exe /DumpState

    这显示当前配置:

    default realm = CONTOSO.COM (external)
    CONTOSO.COM:
        (no kdc entries for this realm)
        Realm Flags = 0x5 SendAddress Delegate
    Mapping all users (*) to a local account by the same name (*).
    

    在 Windows 客户端上创建一个本地用户,无需密码,其名称在 IPA 服务器上存在。否则您将收到错误 -1332:帐户名与安全 ID 之间未进行映射

    测试您是否可以作为用户获取票证:

    运行方式/用户:[电子邮件保护]命令

    在新的命令窗口中运行:

    清单

    这将输出当前票证信息:

    当前 LogonId 为 0:0x6c70e

    Cached Tickets: (1)
    
    #0> Client: joe @ CONTOSO.COM
        Server: krbtgt/CONTOSO.COM @ CONTOSO.COM
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
        Start Time: 2/22/2014 5:22:07 (local)
        End Time:   2/23/2014 5:22:07 (local)
        Renew Time: 3/1/2014 5:22:07 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
    
  3. NFS 服务器配置

    mkdir -p /winshare/joe
    chown -R joe:joe/winshare/joe
    exportfs -o rw,sec=krb5 *:/winshare/joe
    

尝试在 Windows 客户端上挂载上述共享时:

mount -o sec=krb5 nfs.contoso.com:/winshare/joe E:

我收到以下错误:

网络错误 - 121

Type 'NET HELPMSG 121' for more information.

C:\Windows\system32>NET HELPMSG 121

The semaphore timeout period has expired.

尝试使用ms-nfs41-客户端-x64也失败了:

C:\Users\joe\Desktop\ms-nfs41-client-x64>nfs_mount.exe -o sec=krb5 * nfs.contoso.com:/winshare/joe

WNetUseConnection(*:, \\nfs.contoso.com\winshare\joe) failed with error code 1231.
The network location cannot be reached. For information about network troubleshooting, see Windows Help.
  1. 使用 sec=sys 的 NFS 共享有效
  2. 以 joe 的身份登录 Windows-7 客户端。
  3. Windows 日志记录工作后,使用 Putty 连接到 NFS 服务器(只要您先为 Windows 安装 MIT Kerberos 客户端)。

唯一不起作用的是使用 Kerberos 时 NFS。

答案1

据我所知,这一步可能不需要:

为客户端添加NFS服务:

ipa service-add nfs/win7ent-client.contoso.com

您的服务器需要 nfs 服务。

如果您确定需要 Windows 客户端的 nfs 服务,那么很可能它应该使用与该客户端的主机主体完全相同的密码。

此外:您是否已在服务器上启用安全 nfs?我不记得具体细节了,因为我很久以前就转到了 CentOS 7(systemctl (enable|start) nfs-secure 是你的好朋友),但我认为你应该在 /etc/sysconfig/nfs 中查找它。

相关内容