¿Puedo conectarme a la máquina Windows desde el shell de Linux?

68

Puedo conectarme a máquinas Linux desde Windows usando PuTTY / SSH. Quiero hacer lo contrario: conectarme a una máquina Windows desde Linux.

es posible?

vis
fuente
Consulte la respuesta a continuación: unix.stackexchange.com/a/427739/242983 . OpenSSH ahora es compatible de forma nativa con la última actualización de Windows10. Sin embargo, no está disponible para versiones anteriores. Actualice su Windows10 antes de intentar esto.
alpha_989
@Manishearth Porque a veces solo quieres algo que salga de la caja sin necesidad de lectura adicional.
Zimano

Respuestas:

23

Depende de cómo quieras conectarte. Puede crear recursos compartidos en la máquina Windows y usar smb / cifs para conectarse al recurso compartido.

La sintaxis dependerá de si estás en un dominio o no.

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

También tiene la capacidad de montar los $IPCrecursos compartidos y administrativos. Puede buscar en la Comunicación entre procesos lo que puede hacer a través del $IPCrecurso compartido.

Siempre hay:

  • RDP
  • VNC
  • telnet
  • ssh
  • Linux en Windows

Con los últimos 3 necesita instalar software adicional.

VNC se puede ejecutar desde un binario independiente o instalado.

Para RDP, la mayoría de los sistemas Linux ya se han rdesktopinstalado o están disponibles en el administrador de paquetes. El uso rdesktopsolo tiene que habilitar las conexiones RDP a su sistema Windows y luego podrá usar RDP para una consola GUI completa de Windows.

2bc
fuente
7

Sí, puede conectarse a Windows Machine desde el cliente Linux. Pero para eso debe alojar algún tipo de servidor (es decir, telnet, ssh, ftp o cualquier otro tipo de servidor) en la máquina Windows y debe tener el cliente correspondiente en Linux.

Pradeepchhetri
fuente
2
Dado que Windows depende más de su GUI que Linux, su mejor opción es probablemente RDP .
cjm
No creo que se quisiera decir algo así como ftp en la pregunta. Y telnet ... ¿en serio?
Usuario desconocido
Sí, probablemente quiso decir ssh ...
jcora
@pradeepchhetri y ¿Windows tiene algunos de estos servidores activos por defecto?
H_7
3
@ H_7: Windows admite el servidor telnet y ftp pero, de manera predeterminada, no se están ejecutando. Debe hacer que se ejecuten: 1. Vaya a Panel de control -> 2. Programas y características -> 3. Active o desactive las características de Windows. Aquí puede ver la lista de servidores o clientes. Puede ejecutar el servidor telnet o ftp desde aquí.
pradeepchhetri
5

Si está activado Windows 10, puede instalarlo OpenSSHutilizando el siguiente script de 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

Tenga en cuenta que este script cambiará el dns a Google dns. Como OpenSSHno se distribuye con la Windows10distribución predeterminada , en realidad descargará algunos archivos de Internet. Por lo tanto, necesita una conexión a Internet que funcione y un servidor DNS correcto, razón por la cual especifiqué el servidor DNS estático, en caso de que esté detrás de un firewall o use una IP estática sin servidor DNS.

Una vez que haya hecho esto, debe averiguar la dirección IP del Windows host usign

ipconfig

Luego, desde el Linux/Unixsistema operativo hacer

ssh username@Windows_ip

donde username es el nombre de la cuenta y Windows_ipes la dirección IP de la computadora con Windows en la que está intentando iniciar sesión

alpha_989
fuente
En mi instalación de Windows, no se ejecuta nada excepto la primera línea. La respuesta es "Sart-Sleep no se reconoce como un comando interno o externo, programa operativo o archivo por lotes". Así que esto no es tan fácil como quisiera :-)
levitopher
1
Un usuario anónimo acaba de notar en una edición (fallida) que la línea que comienza Repair-SshdHostKeyPermissionno es necesaria. No sé si esto es cierto o no, pero en caso de que lo sea, no quiero que la nota se pierda para siempre.
Roaima
4

Tal vez le gustaría probar RDP o software como teamviewer. También puede instalar cygwin en su máquina con Windows y configurarlo para acceso ssh, de modo que obtenga un shell como lo conoce de linux cuando se conecte por ssh.

mru
fuente
2

Debe instalar el servidor openssh en la máquina con Windows como el servidor openssh en Android. Puede usar masilla en la máquina iinux para enviar a la máquina Windows. Puede usar netstat para verificarlo después de instalar el servidor openssh en la máquina Windows.

sorpresa
fuente
1
¿por qué necesitas masilla en máquinas linux para ssh a windows? ssh normalmente ya está instalado en máquinas Linux ... ¿no?
alpha_989
2

Si usa git en Windows, felicidades, ya puede ingresar a su máquina Windows.

Simplemente inicie el servidor ssh:

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

Luego configure su firewall con este comando powershell:

New-NetFirewallRule -Name sshd -DisplayName 'SSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
cowlinator
fuente