Docker windows nano server容器中安装ssh实现远程登录管理

【问题】

  • 使用ServiceMonitor.exe作为前台进程运行起来的容器无法attach。
  • 无法远程连接到运行中的容器中进行管理。

【解决方法】

在container中新建管理员用户,通过SSH实现远程连接。

  • 新建本地用户
1 $Password = Read-Host -AsSecureString
2 New-LocalUser "root" -Password $Password -FullName "Root User" -Description "For remote management"
  • 添加用户到Administrators组中
1 Add-LocalGroupMember -Group "Administrators" -Member "root"
  • 设置用户密码永不过期(重要!)
Set-LocalUser -Name "root" -AccountNeverExpires
  • 下载OpenSSH

https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH

  • 解压,执行install-sshd.ps1

Docker windows nano server容器中安装ssh实现远程登录管理

  •  安装完毕后,即可启动sshd服务
1 Start-Service sshd
  • 设置sshd为默认开启的服务
1 Set-Service sshd -StartupType Automatic
  • 添加防火墙规则,允许默认的ssh端口(22)通过*
1 New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH

不过在nano server中貌似把防火墙的功能精简了。使用New-NetFirewallRule命令报错,找不到这个命令。所有的端口只要暴露了皆可访问,上面一步就可以省去了。

Docker windows nano server容器中安装ssh实现远程登录管理

  •  最后,在启动container时暴露22端口。
1 docker run --name mysqltest --hostname mysqltest1 --expose=3306 --expose=22 --network=mysqltest-transparent-network --ip="192.168.1.50" -d zwang3/mysql:v3 c:\ServiceMonitor.exe mysql
  • 在远程通过ssh访问,需要指定 command为cmd或者powershell。
1 ssh -l root 192.168.1.50 powershell

 

上一篇:linux – 如何跟踪ssh连接时间,断开连接时间和空闲时间?


下一篇:debian – 有没有办法在Android设备上运行ssh服务器?