9

我创建了一个运行 docker 的 W10 VM(来宾),拉取了 microsoft/nanoserver 映像并托管了一个映像容器。

(这里的教程:https ://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10 )

一切运行良好,甚至主机也可以 ping 在来宾 W10 下运行的容器。但我不能做的是将远程powershell连接到容器。

Enter-PSSession -ComputerName "<container ip>" -Credential ~\Administrator

这会弹出一个对话框,询问用户和密码。我不能将其留空或等等 - 结果是访问被拒绝。任何想法如何连接或设置 nanoserver 容器的密码?

4

2 回答 2

1

我已经为此苦苦挣扎了几天。但是,认为我的问题略有不同,因为我正在尝试对 Windows docker 容器执行 Enter-PSSession,但来自另一台机器,而不是容器主机。

在本教程(http://dinventive.com/blog/2016/01/30/windows-server-core-hello-container/)中,这个人在主机 PSSession 中创建了一个嵌套容器 PSSession。

他使用此命令,该命令仅在最新版本的 Powershell 中可用。(不在 v3 中)

Enter-PSSession -ContainerId "<container ID>"

通过执行以下操作获取 ID:

Get-Container | fl

您还必须检查您的 Powershell 版本并在需要时进行升级。

检查 PS 版本:

$PSVersionTable

并下载 Powershell 最新版本:https ://www.microsoft.com/en-us/download/details.aspx?id=50395

于 2017-01-05T09:42:00.663 回答
0

当使用 IP 地址连接到 PS-Session 时,它会增加一些要求,您必须将远程设备配置为使用 ssl 或在受信任的主机中列出 IP 地址。

解决方案是尝试使用设备的主机名,我已经取得了巨大的成功。或者使用受信任的主机列表。根据我的经验,如果您在您的机器和远程机器上添加受信任的列表条目,它会始终如一地工作。您还可以指定:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"

这基本上会将所有机器设置在受信任的主机列表中,它有它的缺点,就像所有机器都受信任但在某些受限网络中是可以接受的。在主机和客户端机器上执行此操作似乎会产生最佳结果。

当指定-Credentials它需要一个凭证对象时,您可以在 cmdlet 之前制作一个以避免每次都输入它,如下所示:

$secpass = convertto-securestring "Password Here" -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "Username Here", $secpass 
Enter-PSSession -ComputerName "<container ip>" -Credential $cred

在脚本中编码这样的凭据是不好的做法,您应该考虑在脚本中正确存储凭据,上面有很多好的资源。

于 2016-12-20T02:03:46.603 回答