Czy mogę połączyć się z maszyną Windows za pomocą powłoki Linux?


68

Mogę połączyć się z komputerami z systemem Linux za pomocą systemu Windows za pomocą PuTTY / SSH. Chcę zrobić to na odwrót - połączyć się z maszyną Windows z Linuksa.

czy to możliwe?


Zobacz odpowiedź poniżej: unix.stackexchange.com/a/427739/242983 . OpenSSH jest teraz obsługiwany natywnie przez najnowszą aktualizację Windows10. Jednak nie jest dostępny dla starszych wersji. Zaktualizuj system Windows10 przed wypróbowaniem tego.
alpha_989

@Manishearth Ponieważ czasami chcesz po prostu czegoś, co działa od razu po wyjęciu z pudełka i nie wymaga dodatkowego czytania.
Zimano

Odpowiedzi:


23

To zależy od tego, jak chcesz się połączyć. Możesz tworzyć udziały na komputerze z systemem Windows i używać smb / cifs do łączenia się z udziałem.

Składnia zależy od tego, czy jesteś w domenie, czy nie.

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

Możesz także zamontować $IPCudziały administracyjne i administracyjne. Możesz zajrzeć do komunikacji między procesami, aby dowiedzieć się, co możesz zrobić za pośrednictwem $IPCudziału.

Zawsze jest:

  • PROW
  • VNC
  • telnet
  • ssh
  • Linux w systemie Windows

W przypadku ostatnich 3 musisz zainstalować dodatkowe oprogramowanie.

VNC można uruchomić z autonomicznego pliku binarnego lub zainstalować.

W przypadku protokołu RDP większość systemów Linux została już rdesktopzainstalowana lub jest dostępna w menedżerze pakietów. Używając tego rdesktopmusisz jedynie włączyć połączenia RDP z systemem Windows, a wtedy będziesz mógł użyć RDP dla pełnej konsoli GUI Windows.


7

Tak, możesz połączyć się z Windows Machine z klienta Linux. Ale w tym celu musisz hostować jakiś serwer (np. Telnet, ssh, ftp lub inny serwer) na komputerze z systemem Windows i powinieneś mieć odpowiedniego klienta w systemie Linux.


2
Ponieważ system Windows jest bardziej zależny od GUI niż Linux, najlepszym rozwiązaniem jest prawdopodobnie RDP .
cjm

Nie sądzę, żeby w pytaniu było coś takiego jak ftp. I telnet - ... naprawdę?
użytkownik nieznany

Tak, prawdopodobnie miał na myśli ssh ...
jcora

@pradeepchhetri i czy system Windows ma domyślnie niektóre z tych serwerów?
H_7

3
@ H_7: Windows obsługuje serwer telnet i ftp, ale domyślnie nie działają. Musisz je uruchomić: 1. Przejdź do Panelu sterowania -> 2. Programy i funkcje -> 3. Włącz lub wyłącz funkcje systemu Windows. Tutaj możesz zobaczyć listę serwerów lub klientów. Tutaj możesz uruchomić serwer telnet lub ftp.
pradeepchhetri

5

Jeśli jesteś włączony Windows 10, możesz zainstalować OpenSSHza pomocą następującego skryptu 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

Pamiętaj, że ten skrypt zmieni dns na Google dns. Ponieważ OpenSSHnie jest dystrybuowany z domyślną Windows10dystrybucją, faktycznie pobiera niektóre pliki z Internetu. Potrzebujesz więc działającego połączenia internetowego i poprawnego serwera dns, dlatego podałem statyczny serwer dns, na wypadek, gdybyś był za firewallem lub używasz statycznego adresu IP bez serwera dns.

Gdy to zrobisz, powinieneś dowiedzieć się, jaki jest adres IP Windows hosta

ipconfig

Następnie z Linux/Unixsystemu operacyjnego

ssh username@Windows_ip

gdzie nazwa użytkownika to nazwa konta i Windows_ipadres IP komputera z systemem Windows, na który próbujesz się zalogować


W mojej instalacji systemu Windows uruchamiany jest tylko pierwszy wiersz. Odpowiedź brzmi: „Sart-Sleep nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy”. Więc to nie jest tak
obcinające

1
Anonimowy użytkownik właśnie zauważył w (nieudanej) edycji, że linia zaczynająca się od Repair-SshdHostKeyPermissionnie jest potrzebna. Nie wiem, czy to prawda, ale w takim przypadku nie chcę, aby notatka została utracona na zawsze.
roaima

4

Może chcesz wypróbować RDP lub oprogramowanie, takie jak Teamviewer. Możesz także zainstalować cygwin na swoim komputerze z systemem Windows i skonfigurować go pod kątem dostępu ssh, aby uzyskać powłokę znaną z systemu Linux podczas łączenia przez ssh.


2

Powinieneś zainstalować serwer openssh na maszynie Windows jak serwer openssh na Androidzie. Możesz użyć putty na maszynie iinux, aby ssh na maszynie Windows. Możesz użyć netstat, aby to sprawdzić po zainstalowaniu serwera openssh na maszynie Windows.


1
dlaczego potrzebujesz szpachli na maszynach Linux do ssh do Windows? ssh zwykle jest już zainstalowany na komputerach z linuksem ... prawda?
alpha_989,

2

Jeśli używasz git na Windowsie, gratulacje, możesz już ssh na swoim komputerze z Windows.

Po prostu uruchom serwer ssh:

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

Następnie skonfiguruj zaporę za pomocą polecenia PowerShell:

New-NetFirewallRule -Name sshd -DisplayName 'SSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.