SSH via PowerShell

54

Apakah mungkin untuk membuka sesi SSH di PowerShell? Saat ini saya menggunakan Putty tetapi akan lebih baik jika itu tidak diperlukan.

nw.
sumber
1
Saya tahu itu tidak didukung secara asli tetapi saya juga ingin melihat solusinya.
egorgry
5
apa yang salah dengan hanya memanggil putty.exe (atau plink.exe) dari command line?
Javier
4
Javier: Mari kita mulai dengan plink yang hanya menjadi klien SSH dan sama sekali tidak memiliki fitur emulasi terminal.
grawity
+1, saya ingin melihat solusinya sendiri. Dan sebagian besar aku sangat membenci dempul. (Pengguna SecureCRT)
Urda
1
Microsoft mengumumkan dukungan masa depan untuk SSH: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw.

Jawaban:

9

Saya menulis modul untuk berurusan dengan sesi SSH dari PowerShell, berdasarkan perpustakaan SSH.NET yang ditemukan di CodePlex. Memiliki New-SshSession untuk membuat koneksi (beberapa target menggunakan kredensial berbeda didukung), dan kemudian Anda dapat menggunakan Invoke-SshCommand untuk menjalankan perintah terhadap sejumlah host target. Bahkan ada Enter-SshSession yang memiliki cangkang interaktif yang sangat mendasar.

Artikelnya ada di sini .

Joakim

Joakim
sumber
6

Unduh OpenSSH untuk Windows dan pilih untuk menginstal hanya klien selama instalasi. Seluruh pemasang termasuk server kurang dari 3MB dan klien bekerja dengan baik.

Ameer Deen
sumber
2
Ada banyak peringatan pada proyek itu tentang penginstal menginjak variabel System PATH pada Windows 7 & 8 - berhati-hatilah!
Patrick M
2

Saya masih memposting jawaban untuk pertanyaan ini, karena saya menemukan jawaban yang diterima tidak sesuai dengan kebutuhan saya sama sekali (Hanya solusi berbayar atau yang lain yang tidak menangani terminal dengan baik).

Jadi solusi yang jelas untuk masalah ini adalah menginstal cygwin. Lakukan instalasi minimal jika Anda hanya ingin ssh, tetapi karena PowerShell menyediakan tingkat dasar kompatibilitas dengan * nix shells (perintah dasar masih ada, "/" untuk direktori, dll), sangat mungkin untuk menggunakan hal-hal cygwin di dalam Powershell.

Instal Cygwin di sini

raph.amiard
sumber
1
Cygwin? Bleck! Lebih baik jalankan VM ...
Urda
Bagaimana ? ssh adalah windows yang dapat dieksekusi. Jika Anda tidak ingin beroperasi dengan hal-hal unix-y, seharusnya tidak mengherankan bahwa Anda harus menginstal beberapa lib untuk itu.
raph.amiard
Lihat jawabannya oleh Ameer Deen, saya pikir itu adalah solusi terbaik di sini dan bekerja dengan sangat baik.
Hosh Sadiq
1
@HoshSadiq Dari deskripsi OpenSSH untuk Windows: "Penginstal untuk instalasi minimal lingkungan Cygwin yang cocok untuk menjalankan server OpenSSH pada platform Windows."
Douglas Ludlow
1

Jika mesin target adalah kotak Windows, maka Anda dapat menggunakan PowerShell Remoting , sebagai gantinya.

Ini jelas tidak sama dengan SSH. Ada pro (membawa benda kembali di atas kawat!) Dan kontra (bagaimana jika targetnya adalah Linux?).

Jay Bazuzi
sumber
1

Saya menggunakan Git http://git-scm.com/downloads

Termasuk sejumlah alat lain seperti SCP dan semacamnya yang bermanfaat juga.

Justin
sumber
1

Salah satu cara untuk mendapatkan klien ssh asli yang sangat bagus adalah dengan menginstal git dari GitHub ( https://windows.github.com/ ).

Itu menciptakan jalan pintas ke jendela posh-git dengan semua jalur diatur dengan benar untuk menggunakan git di PowerShell. Itu secara otomatis datang dengan ssh dan scp binari di path.

Saya tidak yakin implementasi apa itu, tetapi memang memiliki Linux like feel, artinya tidak terasa seperti itu .Net atau menggunakan commandhell ​​powershell.

Ia mengambil kunci pribadi yang telah saya konfigurasikan dalam format $ home / .ssh / dalam format openssh dan mungkin seseorang dapat mengonfirmasi. Rasanya seperti openssh.

Untuk membuatnya lebih baik, saya telah mengintegrasikannya ke dalam profil PowerShell reguler saya dengan melakukan hal berikut di $ profil saya. Itu artinya saya tidak perlu menggunakan pintasan github.

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

Devang Mehta
sumber
1

Posh-SSH Adalah modul gratis dari Majalah Poswershell yang bekerja untuk Powershell 3.0 dan di atasnya.

Ini tersedia di http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

Dokumentasi lengkap tersedia di tautan di atas. Dalam skrip Anda tidak benar-benar menginginkan koneksi interaktif, jadi ini adalah dua langkah. 1 buat sesi. Perintah kirim ke-2.

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

Sesi pertama yang Anda buat akan memiliki indeks 0.

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

Ini adalah praktik terbaik untuk membuat penciptaan koneksi dalam try catch dan memvalidasi sesi yang ada sebelum menjalankan perintah. Ini membuat berinteraksi dengan server Linux dari dalam skrip PowerShell berfungsi dengan baik.

Eric
sumber
-2

SSH dan SFTP tidak diragukan lagi merupakan standar industri dalam aplikasi akses jarak jauh yang aman. Untungnya, membangun koneksi bisa sangat cepat dan mudah. Sayangnya kebenarannya adalah bahwa ada banyak kemungkinan untuk membuang waktu dengan pemecahan masalah.

Sayangnya Windows tidak memiliki klien ssh standar atau perangkat lunak deamon.

Ini menghasilkan kebun binatang implementasi yang kurang lebih aneh, open source, freeware, shareware dan sebagainya ... kadang-kadang berfungsi kadang tidak.

Di dalam windows, ini adalah uang. Microsoft tidak ingin banyak pengguna yang terhubung ke 1 komputer dengan mudah. Mereka ingin menjual solusi mereka sendiri. Jadi mereka tidak menawarkan ssl asli.

cygwin adalah solusi terbaik yang tersedia.

putty / plink / winscp sebagai perangkat lunak klien. itu juga ok untuk skrip.

ada ssh deamons untuk integrasi windows, tetapi solusinya kurang lebih tidak stabil.

cara paling stabil untuk menjalankan ssh deamon di windwos adalah menjalankannya di dalam Linux VM, dapat direalisasikan dengan distibution linux kecil.

Zuse68
sumber
4
Ini tidak benar-benar menjawab pertanyaan OP. Bisakah Anda mengedit pertanyaan Anda untuk menunjukkan mengapa cygwin adalah solusi untuk pertanyaan yang diajukan oleh OP?
Saya katakan Reinstate Monica
OP tidak meminta alternatif selain solusi terkait PowerShell.
cychoi