Bisakah saya terhubung ke mesin Windows dari Linux shell?

68

Saya dapat terhubung ke mesin Linux dari Windows menggunakan Putty / SSH. Saya ingin melakukan sebaliknya - terhubung ke mesin Windows dari Linux.

Apakah ini mungkin?

vis
sumber
Lihat jawaban di bawah: unix.stackexchange.com/a/427739/242983 . OpenSSH sekarang didukung secara native oleh pembaruan Windows10 terbaru. Namun, ini tidak tersedia untuk versi yang lebih lama. Harap perbarui Windows10 Anda sebelum mencoba ini.
alpha_989
@Manishearth Karena kadang-kadang Anda hanya menginginkan sesuatu yang bekerja di luar kotak tanpa perlu membaca tambahan.
Zimano

Jawaban:

23

Itu tergantung pada bagaimana Anda ingin terhubung. Anda dapat membuat share di mesin Windows dan menggunakan seseorang untuk menghubungkan ke share.

Sintaks akan bergantung pada apakah Anda berada dalam domain atau tidak.

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

Anda juga memiliki kemampuan untuk me-mount $IPCdan berbagi administratif. Anda dapat melihat ke Komunikasi Antar-Proses untuk mengetahui apa yang dapat Anda lakukan melalui $IPCshare.

Selalu ada:

  • RDP
  • VNC
  • telnet
  • ssh
  • Linux di Windows

Dengan 3 terakhir Anda perlu menginstal perangkat lunak tambahan.

VNC dapat dijalankan dari biner yang berdiri sendiri atau diinstal.

Untuk RDP, sebagian besar sistem Linux sudah rdesktopdiinstal atau tersedia di manajer paket. Menggunakan rdesktopAnda hanya perlu mengaktifkan koneksi RDP ke sistem Windows Anda dan kemudian Anda akan dapat menggunakan RDP untuk konsol Windows GUI penuh.

2bc
sumber
7

Ya, Anda dapat terhubung ke Mesin Windows dari klien Linux. Tetapi untuk itu Anda harus meng-host beberapa jenis server (yaitu telnet, ssh, ftp atau server jenis lain) pada mesin Windows dan Anda harus memiliki klien yang sesuai di Linux.

pradeepchhetri
sumber
2
Karena Windows lebih bergantung pada GUI daripada Linux, taruhan terbaik Anda mungkin RDP .
cjm
Saya tidak berpikir sesuatu seperti ftp dimaksudkan dalam pertanyaan itu. Dan telnet - ... sungguh?
pengguna tidak diketahui
Ya, dia mungkin berarti ssh ...
jcora
@pradeepchhetri dan apakah Windows memiliki beberapa server ini aktif secara default?
H_7
3
@ H_7: Windows mendukung server telnet dan ftp tetapi secara default mereka tidak berjalan. Anda harus membuatnya dijalankan dengan: 1. Buka Control Panel -> 2. Program Dan Fitur -> 3. Mengaktifkan atau menonaktifkan fitur Windows. Di sini Anda dapat melihat daftar server atau klien. Anda dapat menjalankan telnet atau ftp server dari sini.
pradeepchhetri
5

Jika Anda aktif Windows 10, Anda dapat menginstal OpenSSHmenggunakan skrip Powershell berikut.

#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

Harap dicatat bahwa skrip ini akan mengubah dns menjadi Google dns. Karena OpenSSHtidak didistribusikan dengan distribusi default Windows10, sebenarnya akan mengunduh beberapa file dari internet. Jadi Anda memerlukan koneksi internet yang berfungsi dan server dns yang benar, itulah sebabnya saya menentukan server dns statis, kalau-kalau Anda berada di belakang firewall atau menggunakan ip statis tanpa server dns.

Setelah Anda melakukan ini, Anda harus mengetahui alamat ip dari Windows host usign

ipconfig

Lalu dari Linux/UnixOS lakukan

ssh username@Windows_ip

di mana nama pengguna adalah nama akun dan Windows_ipmerupakan alamat ip komputer Windows yang Anda coba masuki

alpha_989
sumber
Pada instalasi windows saya, tidak ada kecuali baris pertama dijalankan. Responsnya adalah "Sart-Sleep tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dijalankan atau file batch". Jadi ini bukan cookie-cutter yang Anda inginkan :-)
levitopher
1
Seorang pengguna anonim baru saja mencatat dalam edit (gagal) bahwa garis yang dimulai dengan Repair-SshdHostKeyPermissiontidak diperlukan. Saya tidak tahu apakah ini benar atau tidak, tetapi kalau-kalau saya tidak ingin uang itu hilang selamanya.
roaima
4

Mungkin Anda ingin mencoba RDP atau perangkat lunak seperti teamviewer. Anda juga dapat menginstal cygwin di mesin windows Anda dan mengkonfigurasinya untuk akses ssh, sehingga Anda akan mendapatkan shell seperti yang Anda tahu dari linux ketika Anda terhubung dengan ssh.

mru
sumber
2

Anda harus menginstal server openssh di Mesin Windows seperti server openssh di android. Anda dapat menggunakan dempul di mesin iinux untuk ssh ke Mesin windows. Anda dapat menggunakan netstat untuk memeriksanya setelah Anda dapat menginstal server openssh di mesin windows.

supriady
sumber
1
mengapa Anda perlu dempul pada mesin linux untuk ssh ke windows? ssh itu biasanya sudah diinstal pada mesin linux .. bukan?
alpha_989
2

Jika Anda menggunakan git di windows, selamat, Anda sudah dapat ssh ke mesin windows Anda.

Mulai saja server ssh:

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

Kemudian konfigurasikan firewall Anda dengan perintah PowerShell ini:

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