PowerShell üzerinden SSH


54

PowerShell'de bir SSH oturumu açmak mümkün mü? Şu anda PuTTY kullanıyorum ancak gerekli olmasaydı iyi olurdu.


1
Yerel olarak desteklenmediğini biliyorum ama bir çözüm görmeyi çok isterim.
egorgry

5
sadece komut satırından putty.exe (veya plink.exe) 'yi çağırırken yanlış olan ne?
Javier,

4
Javier: Sadece bir SSH istemcisi olma ve terminal emülasyon özelliklerinin tamamen eksik olması ile başlayalım .
Grawity

+1, kendim için bir çözüm görmek istiyorum. Ve çoğu zaman macuntan çok nefret ederim. (SecureCRT kullanıcısı)
Urda

1
: Microsoft, gelecek SSH için destek açıkladı blogs.msdn.com/b/powershell/archive/2015/06/03/...
nw.

Yanıtlar:



9

CodePlex'te bulunan SSH.NET kütüphanesine dayanarak PowerShell'den SSH oturumları ile ilgili bir modül yazdım. Bağlantıları oluşturmak için New-SshSession'a sahiptir (farklı kimlik bilgilerini kullanan birden fazla hedef desteklenir) ve ardından herhangi bir sayıda hedef ana bilgisayara karşı komut çalıştırmak için Invoke-SshCommand kullanabilirsiniz. Çok basit ve etkileşimli bir kabuğu olan bir Enter-SshSession bile var.

Makale burada .

Joakim


6

OpenSSH for Windows'ı indirin ve kurulum sırasında sadece istemciyi kurmayı seçin. Sunucuyu dahil eden tüm yükleyici daha az 3 MB'dir ve istemci iyi çalışıyor.


2
Bu projede, Windows 7 ve 8'de System PATH değişkenini durduran yükleyici hakkında birçok uyarı var - dikkatli olun!
Patrick M

2

Hala bu soruya cevap gönderiyorum, çünkü kabul edilen cevabın ihtiyaçlarıma uymadığını gördüm (Sadece ücretli bir çözüm veya terminali iyi idare etmeyen başka bir çözüm).

Bu yüzden bu sorunun bariz çözümü cygwin'i kurmaktır. Sadece ssh istiyorsanız minimum kurulum yapın, ancak powershell * nix kabukları ile temel bir uyumluluk düzeyi sağladığından (temel komutlar hala oradadır, dizinler için "/" vb.), Powershell içinde cygwin kullanmak gerçekten mümkündür.

Cygwin buraya kurun


1
Cygwin? Bleck! Bir VM'yi de ateşleyebilir ...
Urda

Nasıl yani ? ssh çalıştırılabilir bir penceredir. Eğer unix-y ile birlikte çalışmak istemiyorsanız, bunun için bazı kütüphaneler yüklemeniz şaşırtıcı değildir.
raph.amiard

Ameer Deen'in cevabını görün, bence buradaki en iyi çözüm ve harika çalışıyor.
Hosh Sadiq

1
@HoshSadiq Windows için OpenSSH'den açıklama: "Windows platformunda bir OpenSSH sunucusunu çalıştırmak için uygun olan Cygwin ortamının asgari kurulumu için bir yükleyici."
Douglas Ludlow


1

Hedef makine bir Windows kutusuysa , bunun yerine PowerShell Remoting'i kullanabilirsiniz .

Kesinlikle SSH ile aynı değil. Artıları (tel üzerinden nesneleri geri getirerek!) Ve eksileri (hedef Linux ise?) Vardır.




1

Çok iyi bir yerel ssh istemcisi edinmenin bir yolu GitHub'dan git'i yüklemektir ( https://windows.github.com/ ).

Git'i powershell'de kullanmak için doğru bir şekilde ayarlanmış olan tüm yolları içeren bir pencereye kısayol oluşturur. Bu otomatik olarak yolda ssh ve scp ikili dosyaları ile birlikte gelir.

Hangi uygulamanın ne olduğundan emin değilim, ancak Linux gibi bir hissi var, yani.

$ Home / .ssh / openssh biçiminde yapılandırdığım özel anahtarı alıyor ve belki birileri onaylayabilir. Openssh gibi hissediyor.

Daha da iyisi yapmak için $ profilimde aşağıdakileri yaparak normal powershell profilime ekledim. Bu, Github'un kısayolunu kullanmak zorunda olmadığım anlamına geliyor.

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


1

Posh-SSH Powershell 3.0 ve üzeri sürümlerde çalışan Poswershell Magazine'den ücretsiz bir modüldür.

Http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/ adresinde bulunabilir.

Tam dökümantasyon yukarıdaki linkte verilmiştir. Bir komut dosyasında gerçekten etkileşimli bağlantılar istemiyorsunuz, bu yüzden iki adım. 1. oturumu oluşturun. 2. gönderme komutları.

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

Oluşturduğunuz ilk oturumda 0 dizini olacaktır.

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

Bağlantı oluşturmayı bir try catch içine koymak ve bir komutu çalıştırmadan önce var olan oturumu doğrulamak en iyi yöntemdir. Bu, bir powershell betiğinin içinden Linux sunucularıyla etkileşimin iyi çalışmasını sağlar.


-2

SSH ve SFTP, şüphesiz güvenli uzaktan erişim uygulamasında endüstri standardını temsil ediyor. Neyse ki, bir bağlantı kurmak gerçekten hızlı ve kolay olabilir. Maalesef gerçek şu ki, sorun giderme ile zaman kaybetmek için birçok imkan bulunuyor.

Maalesef, Windows'un standart bir ssh istemcisi veya deamon yazılımı bulunmuyor.

Bu, az ya da çok garip uygulamalar, açık kaynak kodlu, freeware, shareware vb.

Pencerelerde, bu bir para şeydir. Microsoft, yalnızca 1 lizensli bilgisayara kolayca bağlanan pek çok kullanıcıyı istememektedir. Kendi çözümlerini satmak istiyorlar. Bu yüzden yerli ssl sunmuyorlar.

cygwin mevcut en iyi çözümdür.

istemci yazılımı olarak macun / plink / winscp. komut dosyası için de tamam.

Windows entegrasyonu için ssh deamons var, ancak çözümler az ya da çok kararsız.

ssh deamon'u çalıştırmanın en istikrarlı yolu, çalışan bir Linux VM içinde çalıştırmaktır, küçük bir linux dağıtımıyla gerçekleştirilebilir.


4
Bu OP'lerin sorusuna gerçekten cevap vermiyor . Sorunuzu, cygwin'in neden OP tarafından ortaya atılan soruya bir çözüm olduğunu göstermek üzere düzenleyebilir misiniz?
Twisty Impersonator

OP, PowerShell ile ilgili çözümlerden başka alternatifler istemiyor.
cychoi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.