我可以从Linux Shell连接到Windows机器吗?


68

我可以使用PuTTY / SSH从Windows连接到Linux机器。我想反过来做-从Linux连接到Windows计算机。

这可能吗?


请参阅下面的答案:unix.stackexchange.com/a/427739/242983。Windows10的最新更新现在固有地支持OpenSSH。但是,它不适用于旧版本。请尝试先更新Windows10。
alpha_989 '18

@Manishearth因为有时您只需要开箱即用的东西,而无需额外阅读。
Zimano

Answers:


23

这取决于您要如何连接。您可以在Windows计算机上创建共享,然后使用smb / cifs连接到该共享。

语法取决于您是否在域中。

# mount -t cifs //server/share /mnt/server --verbose -o user=UserName,dom=DOMAIN

您还可以挂载$IPC和管理共享。您可以查看进程间通信,以了解通过$IPC共享可以执行的操作。

总有:

  • RDP
  • VNC
  • 远程登录
  • ssh
  • Windows上的Linux

对于最后3个,您需要安装其他软件。

VNC可以从独立的二进制文件运行或安装。

对于RDP,大多数Linux系统已经rdesktop安装或在软件包管理器中可用。使用rdesktopRDP只需启用与Windows系统的RDP连接,然后您就可以将RDP用于完整的GUI Windows控制台。


7

是的,您可以从Linux客户端连接到Windows计算机。但是为此,您必须在Windows计算机上托管某种服务器(即telnet,ssh,ftp或任何其他类型的服务器),并且您应该在Linux上具有相应的客户端。


2
由于Windows比Linux更依赖于GUI,因此最好的选择可能是RDP
cjm 2012年

我认为问题不像ftp这样。和telnet-...真的吗?
用户未知

是的,他可能是ssh ...
jcora 2012年

@ pradeepchhetri,Windows默认情况下是否有一些处于活动状态的服务器?
H_7 2012年

3
@ H_7:Windows支持telnet和ftp服务器,但默认情况下它们未运行。您必须通过以下方式运行它们:1.转到控制面板-> 2.程序和功能-> 3.打开或关闭Windows功能。在这里,您可以看到服务器或客户端的列表。您可以从此处运行telnet或ftp服务器。
pradeepchhetri 2012年

5

如果打开Windows 10,则可以OpenSSH使用以下Powershell脚本进行安装。

#change dns server to 8.8.8.8 so that the OpenSSH stuff can be downloaded
netsh interface ip set dns "Ethernet" static 8.8.8.8

#sleep for 60 s so that the DNS server has time to register
Start-Sleep -m 60

#check if OpenSSH is already installed or not
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# Check if OpenSSH is available
dism /Online /Get-Capabilities | findstr OpenSSH

# install the server and/or client features:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Install-Module -Force OpenSSHUtils

Repair-SshdHostKeyPermission -FilePath C:\Windows\System32\OpenSSH\ssh_host_ed25519_key

# start the ssh server daemon
Start-Service sshd

# This should return a Status of Running
Get-Service sshd

# add firewall rule to allow inbound and outbound traffic through port 22
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Service sshd -Enabled True -Direction Inbound -Protocol TCP -Action Allow -Profile Domain

请注意,此脚本会将dns更改为Google dns。由于 OpenSSH未随默认分发一起Windows10分发,因此它将实际上从Internet下载一些文件。因此,您需要一个有效的Internet连接和一个正确的dns服务器,这就是为什么我指定静态dns服务器的原因,以防万一您位于防火墙后面或使用没有dns服务器的静态ip。

完成此操作后,您应该找出Windows 主机usign 的IP地址。

ipconfig

然后从Linux/UnixOS做

ssh username@Windows_ip

其中username是帐户名称,Windows_ip是您尝试登录的Windows计算机的IP地址。


在我的Windows安装中,除了第一行外,什么都没有运行。响应为“无法将Sart-Sleep识别为内部或外部命令,可操作程序或批处理文件”。因此,这不像您想要的那样简单:-)
levitopher

1
一位匿名用户刚刚在(失败的)编辑中指出,Repair-SshdHostKeyPermission不需要以开头的行。我不知道这是否成立,但万一是我不想永远丢失笔记。
roaima

4

也许您想尝试RDP或类似teamviewer的软件。另外,您也可以在Windows计算机上安装cygwin并将其配置为用于ssh访问,因此当通过ssh连接时,您将从Linux获得一个shell,就像您在Linux上所知道的那样。


2

您应该在Windows机器上安装openssh服务器,例如android上的openssh服务器。您可以在iinux机器上使用putty将ssh切换到Windows机器。在Windows机器上安装openssh服务器之后,可以使用netstat对其进行检查。


1
为什么需要在Linux机器上使用腻子将ssh转换为Windows?ssh它通常已经安装在linux机器上了。
alpha_989 '18

2

如果在Windows上使用git,那么恭喜,您已经可以将ssh插入Windows计算机。

只需启动ssh服务器:

net start "C:\Program Files\Git\usr\bin\sshd.exe"

然后使用此powershell命令配置防火墙:

New-NetFirewallRule -Name sshd -DisplayName 'SSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.