ฉันสามารถเชื่อมต่อกับเครื่อง Windows จากเชลล์ Linux ได้หรือไม่


68

ฉันสามารถเชื่อมต่อกับเครื่อง Linux จาก Windows โดยใช้ PuTTY / SSH ฉันต้องการที่จะทำวิธีอื่น ๆ - เชื่อมต่อกับเครื่อง Windows จาก Linux

เป็นไปได้ไหม


ดูคำตอบด้านล่าง: unix.stackexchange.com/a/427739/242983 ขณะนี้ OpenSSH ได้รับการสนับสนุนอย่างเป็นทางการจากการอัพเดตล่าสุดของ Windows10 อย่างไรก็ตามมันไม่สามารถใช้ได้กับเวอร์ชั่นเก่า โปรดอัปเดต Windows10 ของคุณก่อนลอง
alpha_989

@Mearearth เพราะบางครั้งคุณแค่ต้องการบางสิ่งที่ออกนอกกรอบโดยไม่จำเป็นต้องอ่านเพิ่ม
Zimano

คำตอบ:


23

ขึ้นอยู่กับว่าคุณต้องการเชื่อมต่ออย่างไร คุณสามารถสร้างการแชร์บนเครื่อง Windows และใช้ smb / cifs เพื่อเชื่อมต่อกับการแชร์

ไวยากรณ์จะขึ้นอยู่กับว่าคุณอยู่ในโดเมนหรือไม่

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

คุณมีความสามารถในการติดตั้ง$IPCและแบ่งปันการบริหาร คุณสามารถดูการสื่อสารระหว่างกระบวนการสำหรับสิ่งที่คุณสามารถทำได้ผ่านการ$IPCแบ่งปัน

มีอยู่เสมอ:

  • RDP
  • VNC
  • Telnet
  • SSH
  • Linux บน Windows

ด้วย 3 รายการสุดท้ายคุณจะต้องติดตั้งซอฟต์แวร์เพิ่มเติม

  • Kpym (เซิร์ฟเวอร์ telnet / ssh)
  • MobaSSH (เซิร์ฟเวอร์ ssh)
  • Cygwin (รันสภาพแวดล้อม Linux ภายใน Windows)
  • DamnSmall Linux - ใน Windows (เช่น Cygwin ใช้ DSL ใน Windows)

VNC สามารถเรียกใช้จากไบนารีแบบสแตนด์อโลนหรือติดตั้ง

สำหรับ RDP ระบบ Linux ส่วนใหญ่rdesktopติดตั้งไว้แล้วหรือมีอยู่ในเครื่องมือจัดการแพ็คเกจ การใช้งานrdesktopคุณจะต้องเปิดใช้งานการเชื่อมต่อ RDP กับระบบ Windows ของคุณจากนั้นคุณจะสามารถใช้ RDP สำหรับคอนโซล GUI Windows แบบเต็มได้


7

ใช่คุณสามารถเชื่อมต่อกับ Windows Machine จากไคลเอ็นต์ Linux แต่สำหรับการที่คุณต้องโฮสต์เซิร์ฟเวอร์บางประเภท (เช่น telnet, ssh, ftp หรือเซิร์ฟเวอร์ชนิดอื่น ๆ ) บนเครื่อง Windows และคุณควรมีไคลเอ็นต์ที่เกี่ยวข้องบน Linux


2
ตั้งแต่ Windows เป็นมากขึ้นอยู่กับ GUI กว่าลินุกซ์ทางออกที่ดีที่สุดของคุณน่าจะRDP
cjm

ฉันไม่คิดว่าบางอย่างเช่น ftp มีความหมายในคำถาม และ telnet - ... จริงเหรอ?
ผู้ใช้ที่ไม่รู้จัก

ใช่เขาอาจหมายถึง ssh ...
jcora

@pradeepchhetri และ Windows มีบางเซิร์ฟเวอร์นี้ที่ใช้งานโดยค่าเริ่มต้นหรือไม่
H_7

3
@ H_7: Windows รองรับ telnet และ ftp server แต่โดยค่าเริ่มต้นจะไม่ทำงาน คุณต้องทำให้มันทำงานโดย: 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

โปรดทราบว่าสคริปต์นี้จะเปลี่ยน dns เป็น Google dns เนื่องจาก OpenSSHไม่ได้รับการเผยแพร่ด้วยการWindows10กระจายเริ่มต้นจึงจะดาวน์โหลดไฟล์บางไฟล์จากอินเทอร์เน็ต ดังนั้นคุณต้องเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้และเซิร์ฟเวอร์ DNS ที่ถูกต้องซึ่งเป็นเหตุผลที่ฉันระบุเซิร์ฟเวอร์ DNS แบบคงที่ในกรณีที่คุณอยู่หลังไฟร์วอลล์หรือใช้ IP แบบคงที่ไม่มีเซิร์ฟเวอร์ DNS

เมื่อคุณทำสิ่งนี้เสร็จแล้วคุณควรหาที่อยู่ IP ของWindows โฮสต์ที่ลงชื่อเข้าใช้

ipconfig

จากนั้นLinux/Unixระบบปฏิบัติการจะทำ

ssh username@Windows_ip

โดยที่ชื่อผู้ใช้เป็นชื่อของบัญชีและWindows_ipเป็นที่อยู่ ip ของคอมพิวเตอร์ Windows ที่คุณพยายามเข้าสู่ระบบ


ในการติดตั้ง windows ของฉันไม่มีอะไรยกเว้นบรรทัดแรกถูกเรียกใช้ การตอบสนองคือ "Sart-Sleep ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก, โปรแกรมที่ทำงานได้หรือไฟล์แบตช์" ดังนั้นนี่ไม่ใช่ตัวตัดคุกกี้อย่างที่คุณต้องการ :-)
levitopher

1
ผู้ใช้ที่ไม่ระบุชื่อเพิ่งจดบันทึกในการแก้ไข (ล้มเหลว) ที่Repair-SshdHostKeyPermissionไม่จำเป็นต้องใช้บรรทัดที่ขึ้นต้นด้วย ฉันไม่รู้ว่าสิ่งนี้จริงหรือไม่ แต่ในกรณีที่ฉันไม่ต้องการให้โน้ตหายไปตลอดกาล
roaima

4

บางทีคุณอาจต้องการทดลองใช้ RDP หรือซอฟต์แวร์เช่น teamviewer นอกจากนี้คุณสามารถติดตั้ง cygwin บนเครื่อง windows ของคุณและกำหนดค่าสำหรับการเข้าถึง ssh ดังนั้นคุณจะได้รับเชลล์ตามที่คุณรู้จาก linux เมื่อคุณเชื่อมต่อด้วย ssh


2

คุณควรติดตั้งเซิร์ฟเวอร์ openssh บนเครื่อง Windows เช่นเซิร์ฟเวอร์ openssh บน android คุณสามารถใช้ผงสำหรับอุดรูบนเครื่อง iinux เพื่อ ssh ไปยังเครื่อง windows คุณสามารถใช้ netstat เพื่อตรวจสอบหลังจากที่คุณสามารถติดตั้งเซิร์ฟเวอร์ openssh บนเครื่อง windows


1
ทำไมคุณต้องฉาบบนเครื่อง linux เพื่อ ssh windows? ssh มันมักจะติดตั้งบนเครื่อง linux แล้วใช่ไหม?
alpha_989

2

หากคุณใช้คอมไพล์บน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.