Могу ли я подключиться к машине Windows из оболочки Linux?

68

Я могу подключиться к Linux-машинам из Windows, используя PuTTY / SSH. Я хочу сделать наоборот - подключиться к Windows-машине из Linux.

Это возможно?

Vis
источник
Смотрите ответ ниже: unix.stackexchange.com/a/427739/242983 . OpenSSH теперь изначально поддерживается последним обновлением Windows10. Тем не менее, он не доступен для более старых версий. Пожалуйста, обновите ваш Windows10, прежде чем пытаться это.
alpha_989
@Manishearth Потому что иногда вы просто хотите что-то, что работает из коробки без необходимости дополнительного чтения.
Зимано

Ответы:

23

Это зависит от того, как вы хотите подключиться. Вы можете создавать общие папки на компьютере с Windows и использовать smb / cifs для подключения к общей папке.

Синтаксис зависит от того, находитесь ли вы в домене или нет.

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

У вас также есть возможность монтировать $IPCи административные общие ресурсы. Вы можете заглянуть в межпроцессное взаимодействие, чтобы узнать, что вы можете сделать с помощью общего $IPCресурса.

Всегда:

  • RDP
  • VNC
  • телнет
  • SSH
  • Linux на Windows

С последними 3 нужно установить дополнительное программное обеспечение.

VNC может быть запущен из автономного двоичного файла или установлен.

Для RDP большинство систем Linux либо уже rdesktopустановлены, либо доступны в диспетчере пакетов. Для этого rdesktopвам нужно только включить RDP-соединения с вашей системой Windows, и тогда вы сможете использовать RDP для полноценной консоли Windows с графическим интерфейсом.

2bc
источник
7

Да, вы можете подключиться к Windows Machine из Linux-клиента. Но для этого вы должны разместить какой-нибудь сервер (например, telnet, ssh, ftp или любой другой тип сервера) на компьютере с Windows, и у вас должен быть соответствующий клиент в Linux.

pradeepchhetri
источник
2
Поскольку Windows в большей степени зависит от графического интерфейса пользователя, чем Linux, лучше всего выбрать RDP .
cjm
Я не думаю, что что-то вроде ftp подразумевалось в этом вопросе. И телнет - ... правда?
пользователь неизвестен
Да, он, вероятно, имел в виду ssh ...
Jcora
@pradeepchhetri, а в Windows некоторые из этих серверов активны по умолчанию?
H_7
3
@ H_7: Windows поддерживает Telnet и FTP-сервер, но по умолчанию они не работают. Вы должны настроить их на выполнение: 1. Перейдите в Панель управления -> 2. Программы и компоненты -> 3. Включите или отключите функции Windows. Здесь вы можете увидеть список серверов или клиентов. Вы можете запустить telnet или ftp сервер отсюда.
Pradeepchhetri
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

Обратите внимание, что этот скрипт изменит днс на гугл днс. Поскольку OpenSSHон не распространяется с дистрибутивом по умолчанию Windows10, он фактически загружает некоторые файлы из Интернета. Поэтому вам нужно работающее интернет-соединение и правильный DNS-сервер, поэтому я указал статический DNS-сервер, на случай, если вы находитесь за брандмауэром или используете статический IP-адрес без DNS-сервера.

Как только вы это сделаете, вы должны выяснить IP-адрес Windows хоста usign

ipconfig

Тогда из Linux/UnixОС делай

ssh username@Windows_ip

где имя пользователя - это имя учетной записи и Windows_ipIP-адрес компьютера с Windows, в который вы пытаетесь войти

alpha_989
источник
На моей установке windows ничего кроме первой строки не запускается. Ответ: «Sart-Sleep не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл». Так что это не совсем так, как вам хотелось бы :-)
Левитофер
1
Анонимный пользователь только что отметил (не удалось) редактирование, что строка, начинающаяся с Repair-SshdHostKeyPermission, не нужна. Я не знаю, правда ли это, но если это так, я не хочу, чтобы записка была потеряна навсегда.
роайма
4

Может быть, вы хотели бы попробовать RDP или программное обеспечение, такое как teamviewer. Также вы можете установить cygwin на ваш компьютер с Windows и настроить его для доступа по ssh, так что вы получите оболочку, как вы знаете, из linux при подключении по ssh.

MRU
источник
2

Вы должны установить сервер openssh на Windows Machine, например, сервер openssh на android. Вы можете использовать putty на машине iinux для ssh на Windows Machine. Вы можете использовать netstat, чтобы проверить его после того, как вы установите сервер openssh на машину Windows.

supriady
источник
1
Зачем вам нужна замазка на машинах Linux для SSH в Windows? ssh обычно уже установлен на Linux-машинах .. не так ли?
alpha_989
2

Если вы используете git на windows, поздравляю, вы уже можете подключиться к 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
cowlinator
источник