我正在尝试使用 Windows 机器部署分布式系统。然而,我想在这个系统上编译和运行的代码应该在基于Linux的环境中得到编译。因此,我在所有节点上下载并安装了 WSL 和 Ubuntu。现在,我需要从控制器节点通过 SSH 访问工作节点。有什么办法可以做到吗?
有没有办法在 Windows 7 上配置OpenSSH以初始化默认 Windows 命令外壳以外的另一个外壳?
me@linuxhost:~
$ ssh me@windowshost
me@windowshost's password:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
me@windowshost C:\Users\me> exit
Connection to windowshost closed.
me@linuxhost:~
$
Run Code Online (Sandbox Code Playgroud)
或者,安装 Cygwin 并在附加的 Net 包中包含 OpenSSH 会导致默认的 Cygwin shell,所以同样的问题存在:有没有办法在安装后配置由 OpenSSH 初始化的 shell?
编辑:
谢谢@simlev 建议使用 Cygwin 我已经改写了我的问题以更清楚地代表我的问题。
我设置了 Windows 10 的 OpenSSH 服务器,通过本文中描述的方法建立到 WSL2 bash 的 ssh 连接:“THE EASY WAY how to SSH into Bash and WSL2 on Windows 10 from an external machine”,以及本文档:“OpenSSH key管理”。
总之,我以管理员身份在 PowerShell 上运行以下命令:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force
Run Code Online (Sandbox Code Playgroud)
之后,我可以ssh <my Windows username>@localhost使用 Windows 密码通过 ssh 从 PowerShell 连接到本地主机上的 WSL2 bash。
接下来,我想不使用密码而是使用密钥对进行连接。因此,我在 PowerShell 上创建了一个密钥对并将其定位为C:\Users\<my Windows username>\.ssh\authorized_keys.
cd C:\Users\<my Windows username>\.ssh
ssh-keygen -t ed25519 -f …Run Code Online (Sandbox Code Playgroud)