เป็นไปได้ไหมที่จะเปิดเซสชัน SSH ใน PowerShell ปัจจุบันฉันใช้ PuTTY แต่มันจะดีถ้าไม่จำเป็น
เป็นไปได้ไหมที่จะเปิดเซสชัน SSH ใน PowerShell ปัจจุบันฉันใช้ PuTTY แต่มันจะดีถ้าไม่จำเป็น
คำตอบ:
ไม่ได้สร้างขึ้นแน่นอน แต่เนื่องจาก Powershell สามารถทำทุกอย่างที่สุทธิสามารถทำได้จึงมีวิธี
โซลูชันที่เสียค่าใช้จ่ายจะเป็น/ n NetCmdlets ของซอฟต์แวร์
โซลูชันฟรีจะใช้คำแนะนำของโพสต์บล็อกนี้
ฉันเขียนโมดูลสำหรับจัดการกับเซสชัน SSH จาก PowerShell ตามไลบรารี SSH.NET ที่พบใน CodePlex มี New-SshSession เพื่อสร้างการเชื่อมต่อ (รองรับหลายเป้าหมายโดยใช้ข้อมูลรับรองที่แตกต่างกัน) จากนั้นคุณสามารถใช้ Invoke-SshCommand เพื่อเรียกใช้คำสั่งกับโฮสต์เป้าหมายจำนวนเท่าใดก็ได้ มีแม้กระทั่ง Enter-SshSession ซึ่งมีเชลล์พื้นฐานแบบโต้ตอบได้
โจอาคิม
ดาวน์โหลดOpenSSH สำหรับ Windowsและเลือกที่จะติดตั้งเฉพาะไคลเอ็นต์ระหว่างการติดตั้ง โปรแกรมติดตั้งทั้งหมดรวมเซิร์ฟเวอร์น้อยกว่า 3MB และลูกค้าใช้งานได้ดี
ฉันยังคงโพสต์คำตอบสำหรับคำถามนี้เพราะฉันพบคำตอบที่ยอมรับไม่ตรงกับความต้องการของฉันเลย (เฉพาะโซลูชันที่ชำระเงินหรืออย่างอื่นที่ไม่รองรับเทอร์มินัล)
ดังนั้นทางออกที่ชัดเจนสำหรับปัญหานี้คือการติดตั้ง cygwin ทำการติดตั้งเพียงเล็กน้อยถ้าคุณต้องการ ssh แต่เนื่องจาก powershell ให้ความเข้ากันได้ระดับพื้นฐานกับ * nix shells (คำสั่งพื้นฐานยังคงมี "/" สำหรับไดเร็กตอรี่ ฯลฯ ) จึงเป็นไปได้ที่จะใช้ cygwin ภายใน Powershell
มีทางเลือก (ฟรี) โซลูชัน PowerShell SSH โดยใช้การปรับใช้ไลบรารีใหม่ให้ดูvBlog >> ไคลเอ็นต์ SSH ที่ใช้ PowerShell
หากเครื่องเป้าหมายเป็นกล่อง Windows คุณสามารถใช้PowerShell Remotingแทนได้
มันไม่เหมือน SSH แน่นอน มีข้อดี (นำวัตถุกลับมาวางสาย!) และข้อเสีย (ถ้าเป้าหมายคือ Linux)
http://www.powershellinside.com/powershell/ssh/ ฟรีสำหรับการใช้งานส่วนตัว
ฉันใช้ Git http://git-scm.com/downloads
รวมถึงโฮสต์ของเครื่องมืออื่น ๆ เช่น SCP และสิ่งนั้นมีประโยชน์เช่นกัน
วิธีหนึ่งในการรับไคลเอนต์ 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")
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 ทำงานได้ดี
SSH และ SFTP เป็นตัวแทนของมาตรฐานอุตสาหกรรมในแอปพลิเคชันการเข้าถึงระยะไกลที่ปลอดภัย โชคดีที่เป็นไปได้ว่าการสร้างการเชื่อมต่อนั้นง่ายและรวดเร็วจริงๆ โชคร้ายที่ความจริงก็คือมีความเป็นไปได้มากมายที่จะเสียเวลากับการแก้ไขปัญหา
โชคไม่ดีที่ Windows ไม่มีไคลเอ็นต์ ssh มาตรฐานหรือซอฟต์แวร์ deamon บนเครื่อง
สิ่งนี้ส่งผลให้มีสวนสัตว์ที่มีการใช้งานนอกลู่นอกทางมากขึ้นหรือน้อยลง, โอเพนซอร์ซ, ฟรีแวร์, แชร์แวร์และอื่น ๆ ... บางครั้งทำงานไม่ได้
ภายในหน้าต่างมันเป็นสิ่งที่เงิน Microsoft ไม่ต้องการผู้ใช้จำนวนมากที่เชื่อมต่อกับคอมพิวเตอร์ที่มีลิขสิทธิ์ 1 เครื่องได้อย่างง่ายดาย พวกเขาต้องการขายโซลูชันของตนเอง ดังนั้นพวกเขาจึงไม่เสนอ ssl ดั้งเดิม
cygwin เป็นทางออกที่ดีที่สุด
putty / plink / winscp เป็นซอฟต์แวร์ไคลเอ็นต์ มันก็โอเคสำหรับการเขียนสคริปต์
มี ssh deamons สำหรับการรวม windows แต่วิธีแก้ปัญหานั้นมีความเสถียรไม่มากก็น้อย
วิธีที่เสถียรที่สุดในการมี ssh deamon บน windwos ที่ทำงานอยู่คือการเรียกใช้ภายใน Linux VM สามารถรับรู้ได้ด้วยการกระจายลินุกซ์ขนาดเล็ก