Powershell远程访问docker上的nanoserver

时间:2016-08-28 19:37:05

标签: powershell docker nano-server

我创建了一个运行docker的W10 VM(guest),提取了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容器密码的任何想法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

在脚本中编写这样的凭据是不好的做法,您应该查看正确地在脚本中存储凭据,有很多好的资源。