SSH ผ่าน PowerShell


54

เป็นไปได้ไหมที่จะเปิดเซสชัน SSH ใน PowerShell ปัจจุบันฉันใช้ PuTTY แต่มันจะดีถ้าไม่จำเป็น


1
ฉันรู้ว่ามันไม่ได้รับการสนับสนุนตามธรรมชาติ แต่ฉันก็ชอบที่จะเห็นวิธีแก้ปัญหาเช่นกัน
egorgry

5
เกิดอะไรขึ้นกับการเรียก putty.exe (หรือ plink.exe) จากบรรทัดคำสั่ง
Javier

4
Javier: เริ่มต้นด้วยการ plink เป็นเพียงลูกค้า SSH และขาดคุณสมบัติการจำลองเทอร์มินัลอย่างสมบูรณ์
grawity

+1, ฉันต้องการดูวิธีแก้ปัญหาด้วยตัวเอง และส่วนใหญ่ฉันเกลียดฉาบมาก (ผู้ใช้ SecureCRT)
Urda

1
Microsoft ประกาศการสนับสนุนในอนาคตสำหรับ SSH: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw

คำตอบ:


19

ไม่ได้สร้างขึ้นแน่นอน แต่เนื่องจาก Powershell สามารถทำทุกอย่างที่สุทธิสามารถทำได้จึงมีวิธี

โซลูชันที่เสียค่าใช้จ่ายจะเป็น/ n NetCmdlets ของซอฟต์แวร์

โซลูชันฟรีจะใช้คำแนะนำของโพสต์บล็อกนี้


9

ฉันเขียนโมดูลสำหรับจัดการกับเซสชัน SSH จาก PowerShell ตามไลบรารี SSH.NET ที่พบใน CodePlex มี New-SshSession เพื่อสร้างการเชื่อมต่อ (รองรับหลายเป้าหมายโดยใช้ข้อมูลรับรองที่แตกต่างกัน) จากนั้นคุณสามารถใช้ Invoke-SshCommand เพื่อเรียกใช้คำสั่งกับโฮสต์เป้าหมายจำนวนเท่าใดก็ได้ มีแม้กระทั่ง Enter-SshSession ซึ่งมีเชลล์พื้นฐานแบบโต้ตอบได้

บทความนี้ที่นี่

โจอาคิม


6

ดาวน์โหลดOpenSSH สำหรับ Windowsและเลือกที่จะติดตั้งเฉพาะไคลเอ็นต์ระหว่างการติดตั้ง โปรแกรมติดตั้งทั้งหมดรวมเซิร์ฟเวอร์น้อยกว่า 3MB และลูกค้าใช้งานได้ดี


2
มีคำเตือนมากมายในโครงการนั้นเกี่ยวกับตัวติดตั้งที่กระทืบตัวแปร System PATH ใน Windows 7 และ 8 - ระวังไว้!
Patrick M

2

ฉันยังคงโพสต์คำตอบสำหรับคำถามนี้เพราะฉันพบคำตอบที่ยอมรับไม่ตรงกับความต้องการของฉันเลย (เฉพาะโซลูชันที่ชำระเงินหรืออย่างอื่นที่ไม่รองรับเทอร์มินัล)

ดังนั้นทางออกที่ชัดเจนสำหรับปัญหานี้คือการติดตั้ง cygwin ทำการติดตั้งเพียงเล็กน้อยถ้าคุณต้องการ ssh แต่เนื่องจาก powershell ให้ความเข้ากันได้ระดับพื้นฐานกับ * nix shells (คำสั่งพื้นฐานยังคงมี "/" สำหรับไดเร็กตอรี่ ฯลฯ ) จึงเป็นไปได้ที่จะใช้ cygwin ภายใน Powershell

Cygwin ติดตั้งที่นี่


1
Cygwin? Bleck! รวมทั้งอาจจะยิงขึ้น VM ...
Urda

งั้นเหรอ ssh เป็นปฏิบัติการที่คอมไพล์ด้วย windows หากคุณไม่ต้องการทำงานร่วมกับสิ่งที่ unix-y มันไม่น่าแปลกใจที่คุณจะต้องติดตั้ง libs บางอย่าง
raph.amiard

ดูคำตอบของ Ameer Deen ฉันคิดว่านี่เป็นทางออกที่ดีที่สุดและใช้งานได้ดี
Hosh Sadiq

1
@HoshSadiq จากคำอธิบาย OpenSSH สำหรับ Windows: "ตัวติดตั้งสำหรับการติดตั้งน้อยที่สุดของสภาพแวดล้อม Cygwin ที่เหมาะสมสำหรับการใช้งานเซิร์ฟเวอร์ OpenSSH บนแพลตฟอร์ม Windows"
ดักลาสลุดโลว์


1

หากเครื่องเป้าหมายเป็นกล่อง Windows คุณสามารถใช้PowerShell Remotingแทนได้

มันไม่เหมือน SSH แน่นอน มีข้อดี (นำวัตถุกลับมาวางสาย!) และข้อเสีย (ถ้าเป้าหมายคือ Linux)




1

วิธีหนึ่งในการรับไคลเอนต์ ssh ที่ดีมากคือติดตั้ง git จาก GitHub ( https://windows.github.com/ )

มันสร้างทางลัดไปยังหน้าต่าง posh-git กับเส้นทางทั้งหมดที่ตั้งค่าอย่างถูกต้องเพื่อใช้คอมไพล์ใน PowerShell ที่มาพร้อมกับ ssh และ scp ไบนารีโดยอัตโนมัติในเส้นทาง

ฉันไม่แน่ใจว่าการใช้งานมันคืออะไร แต่มันมีความรู้สึกเหมือนลินุกซ์นั่นคือมันไม่รู้สึกว่ามันเป็น. Net ตามหรือใช้ commandlets PowerShell

มันคือการรับคีย์ส่วนตัวที่ฉันได้กำหนดค่าในรูปแบบ $ home / .ssh / ใน openssh และบางทีใครบางคนสามารถยืนยันได้ มันรู้สึกเหมือนเป็น openssh

เพื่อให้ดียิ่งขึ้นฉันได้รวมไว้ในโปรไฟล์ PowerShell ปกติของฉันโดยทำสิ่งต่อไปนี้ในโปรไฟล์ $ ของฉัน นั่นหมายความว่าฉันไม่ต้องใช้ทางลัดของ GitHub

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") . (Resolve-Path "$env:LOCALAPPDATA\GitHub\PoshGit_*\profile.example.ps1")


1

Posh-SSH เป็นโมดูลฟรีจาก Poswershell Magazine ที่ใช้งานได้กับ Powershell 3.0 ขึ้นไป

มันสามารถดูได้ที่

เอกสารฉบับเต็มมีให้ที่ลิงค์ด้านบน ในสคริปต์คุณไม่ต้องการการเชื่อมต่อแบบโต้ตอบดังนั้นจึงเป็นสองขั้นตอน ขั้นแรกสร้างเซสชัน ส่งคำสั่งที่ 2

$ServerConnection = New-SSHSession -KeyFile $keyLocation -ComputerName $sshComp -Credential $mycreds -AcceptKey

เซสชั่นแรกที่คุณสร้างจะมีดัชนีเป็น 0

Invoke-SSHCommand -Index 0 -Command "some command to run over ssh"

เป็นแนวปฏิบัติที่ดีที่สุดที่จะสร้างการเชื่อมต่อในลอง catch และตรวจสอบเซสชันที่มีอยู่ก่อนรันคำสั่ง สิ่งนี้ทำให้การโต้ตอบกับเซิร์ฟเวอร์ Linux จากภายในสคริปต์ powershell ทำงานได้ดี


-2

SSH และ SFTP เป็นตัวแทนของมาตรฐานอุตสาหกรรมในแอปพลิเคชันการเข้าถึงระยะไกลที่ปลอดภัย โชคดีที่เป็นไปได้ว่าการสร้างการเชื่อมต่อนั้นง่ายและรวดเร็วจริงๆ โชคร้ายที่ความจริงก็คือมีความเป็นไปได้มากมายที่จะเสียเวลากับการแก้ไขปัญหา

โชคไม่ดีที่ Windows ไม่มีไคลเอ็นต์ ssh มาตรฐานหรือซอฟต์แวร์ deamon บนเครื่อง

สิ่งนี้ส่งผลให้มีสวนสัตว์ที่มีการใช้งานนอกลู่นอกทางมากขึ้นหรือน้อยลง, โอเพนซอร์ซ, ฟรีแวร์, แชร์แวร์และอื่น ๆ ... บางครั้งทำงานไม่ได้

ภายในหน้าต่างมันเป็นสิ่งที่เงิน Microsoft ไม่ต้องการผู้ใช้จำนวนมากที่เชื่อมต่อกับคอมพิวเตอร์ที่มีลิขสิทธิ์ 1 เครื่องได้อย่างง่ายดาย พวกเขาต้องการขายโซลูชันของตนเอง ดังนั้นพวกเขาจึงไม่เสนอ ssl ดั้งเดิม

cygwin เป็นทางออกที่ดีที่สุด

putty / plink / winscp เป็นซอฟต์แวร์ไคลเอ็นต์ มันก็โอเคสำหรับการเขียนสคริปต์

มี ssh deamons สำหรับการรวม windows แต่วิธีแก้ปัญหานั้นมีความเสถียรไม่มากก็น้อย

วิธีที่เสถียรที่สุดในการมี ssh deamon บน windwos ที่ทำงานอยู่คือการเรียกใช้ภายใน Linux VM สามารถรับรู้ได้ด้วยการกระจายลินุกซ์ขนาดเล็ก


4
นี่ไม่ได้ตอบคำถาม OPs จริงๆ คุณสามารถแก้ไขคำถามของคุณเพื่อระบุว่าเหตุใด cygwin จึงเป็นคำตอบสำหรับคำถามที่ OP ใช้?
Twisty Impersonator

OP ไม่ขอทางเลือกอื่นนอกจากโซลูชั่นที่เกี่ยวข้องกับ PowerShell
cychoi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.