Kann ich von der Linux-Shell aus eine Verbindung zum Windows-Computer herstellen?


68

Ich kann unter Windows mit PuTTY / SSH eine Verbindung zu Linux-Computern herstellen. Ich möchte umgekehrt vorgehen - eine Verbindung zu einem Windows-Computer von Linux aus herstellen.

Ist das möglich?


Siehe Antwort unten: unix.stackexchange.com/a/427739/242983 . OpenSSH wird jetzt nativ vom neuesten Update von Windows 10 unterstützt. Es ist jedoch nicht für ältere Versionen verfügbar. Bitte aktualisieren Sie Ihr Windows10, bevor Sie dies versuchen.
Alpha_989

@Manishearth Denn manchmal möchten Sie einfach nur etwas, das sofort funktioniert, ohne dass zusätzliche Informationen erforderlich sind.
Zimano,

Antworten:


23

Es hängt davon ab, wie Sie eine Verbindung herstellen möchten. Sie können Freigaben auf dem Windows-Computer erstellen und smb / cifs verwenden, um eine Verbindung zur Freigabe herzustellen.

Die Syntax hängt davon ab, ob Sie sich in einer Domäne befinden oder nicht.

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

Sie haben auch die Möglichkeit, die $IPCund administrative Freigaben einzuhängen . Sie können in Inter-Process Communication nachsehen, was Sie über die $IPCFreigabe tun können .

Es gibt immer:

  • RDP
  • VNC
  • Telnet
  • ssh
  • Linux unter Windows

Mit den letzten 3 müssen Sie zusätzliche Software installieren.

VNC kann von einer eigenständigen Binärdatei ausgeführt oder installiert werden.

Für RDP haben die meisten Linux-Systeme entweder bereits rdesktopinstalliert oder es ist im Paket-Manager verfügbar. Unter Verwendung von müssen rdesktopSie nur RDP-Verbindungen zu Ihrem Windows-System aktivieren, und dann können Sie RDP für eine vollständige GUI-Windows-Konsole verwenden.


7

Ja, Sie können vom Linux-Client aus eine Verbindung zu Windows Machine herstellen. Dazu müssen Sie jedoch einen Server (z. B. Telnet, SSH, FTP oder einen anderen Server) auf einem Windows-Computer hosten und auf dem Linux-Computer den entsprechenden Client haben.


2
Da Windows mehr von der Benutzeroberfläche als von Linux abhängig ist, ist RDP wahrscheinlich die beste Wahl .
cjm

Ich glaube nicht, dass so etwas wie FTP in der Frage gemeint war. Und Telnet - ... wirklich?
Benutzer unbekannt

Ja, er meinte wahrscheinlich ssh ...
jcora

@pradeepchhetri und hat Windows einige dieser Server standardmäßig aktiviert?
H_7

3
@ H_7: Windows unterstützt Telnet- und FTP-Server, diese werden jedoch standardmäßig nicht ausgeführt. Sie müssen sie folgendermaßen ausführen: 1. Gehen Sie zu Systemsteuerung -> 2. Programme und Funktionen -> 3. Schalten Sie die Windows-Funktionen ein oder aus. Hier sehen Sie die Liste der Server oder Clients. Sie können von hier aus Telnet- oder FTP-Server ausführen.
Pradeepchhetri

5

Wenn Sie eingeschaltet sind Windows 10, können Sie OpenSSHmithilfe des folgenden Powershell-Skripts installieren .

#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

Bitte beachten Sie, dass dieses Skript die DNS in Google DNS ändert. Da OpenSSHes nicht mit der Standarddistribution Windows10verteilt wird, werden tatsächlich einige Dateien aus dem Internet heruntergeladen. Sie benötigen also eine funktionierende Internetverbindung und einen korrekten DNS-Server. Aus diesem Grund habe ich den statischen DNS-Server angegeben, nur für den Fall, dass Sie sich hinter einer Firewall befinden oder eine statische IP ohne DNS-Server verwenden.

Sobald Sie dies getan haben, sollten Sie die IP-Adresse des Windows Host-Benutzers herausfinden

ipconfig

Dann aus dem Linux/UnixOS machen

ssh username@Windows_ip

Dabei ist Benutzername der Name des Kontos und Windows_ipdie IP-Adresse des Windows-Computers, bei dem Sie sich anmelden möchten


Bei meiner Windows-Installation wird nur die erste Zeile ausgeführt. Die Antwort lautet "Sart-Sleep wird nicht als interner oder externer Befehl, ausführbares Programm oder Batch-Datei erkannt". Das ist also nicht ganz so, wie Sie es
möchten

1
Ein anonymer Benutzer hat gerade in einer (fehlgeschlagenen) Bearbeitung festgestellt, dass die Zeile, die mit beginnt, Repair-SshdHostKeyPermissionnicht benötigt wird. Ich weiß nicht, ob dies wahr ist oder nicht, aber falls es so ist, möchte ich nicht, dass die Notiz für immer verloren geht.
Roaima

4

Vielleicht möchten Sie RDP oder Software wie teamviewer ausprobieren. Außerdem können Sie cygwin auf Ihrem Windows-Computer installieren und für den SSH-Zugriff konfigurieren, sodass Sie eine Shell erhalten, wie Sie sie von Linux kennen, wenn Sie eine Verbindung über SSH herstellen.


2

Sie sollten openssh server auf Windows Machine wie openssh server auf android installieren. Sie können putty auf iinux machine verwenden, um zu Windows Machine zu ssh. Sie können netstat verwenden, um es zu überprüfen, nachdem Sie openssh server auf Windows Machine installieren können.


1
warum brauchst du putty auf linux-maschinen, um auf windows zu ssh zu gelangen? ssh ist normalerweise bereits auf Linux-Rechnern installiert.
Alpha_989

2

Wenn Sie Git für Windows verwenden, können Sie bereits in Ihren Windows-Computer ssh.

Starten Sie einfach den ssh-Server:

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

Konfigurieren Sie dann Ihre Firewall mit diesem PowerShell-Befehl:

New-NetFirewallRule -Name sshd -DisplayName 'SSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.