Güvenli Bağlantılarda Uzmanlaşma: Verimli Uzaktan Yönetim için SSH'yi PowerShell ile Kullanma
# İş Akışınızı Güçlendirin: SSH'yi PowerShell ile Kullanmanın 5 Gelişmiş Yolu
Yazılım mühendisliği alanında PowerShell, komut dosyası oluşturma ve otomasyonu içeren birçok kullanım örneğiyle sistemleri yönetmek için çok yönlü ve güçlü bir araç olarak öne çıkıyor. PowerShell ile Secure Shell'i (SSH) kullanmak, çeşitli sistemlerde yepyeni bir kontrol ve yönetim düzeyi açarak çalışmanızı daha verimli ve akıcı hale getirir. Peki bu güçlü kombinasyonun tüm potansiyelinden yararlanıyor musunuz?
Bu makalede, iş akışınızı güçlendirecek ve uzmanlığınızı yükseltecek beş gelişmiş tekniği sergileyerek SSH'yi PowerShell ile nasıl kullanacağınızı derinlemesine inceleyeceğiz. Terminalinizi alın ve başlayalım!
1. PowerShell Kullanarak SSH Oturumu Oluşturma
Öncelikle yerel makineniz ile uzak sistem arasında bir SSH oturumu kurmanız gerekir. Bunu yapmak için PowerShell'de yerleşik olan SSH istemcisini kullanacağız.
# Önkoşullar:
- Makinenizde Windows 10 build 1809 veya üzerinin kurulu olduğundan emin olun.
- Windows 10 cihazınızda OpenSSH İstemcisi özelliği etkinleştirilmelidir. Bunu yapmak için Ayarlar > Uygulamalar > İsteğe Bağlı Özellikler'e gidin, OpenSSH Client'ı arayın ve henüz yüklü değilse Yükle'yi tıklayın.
# Uzak Sisteme Bağlanma:
Önkoşulları karşıladıktan sonra PowerShell'i açın ve SSH bağlantısı kurmak için aşağıdaki komutu çalıştırın:
ssh @" yerine uzak sistemin kullanıcı adını ve " yerine uzak sistemin ana bilgisayar adını veya IP adresini yazın.
2. PowerShell ve SSH ile Uzaktan Komut Çalıştırma
SSH'yi PowerShell ile kullanmanın bir avantajı, manuel olarak oturum açmaya gerek kalmadan uzaktaki sistemlerde komutları yürütebilme yeteneğidir. Bu bölümde komutları uzaktan yürütmek için SSH'nin PowerShell ile nasıl kullanılacağı gösterilecektir.
# Tek Komutun Yürütülmesi:
Tek bir komutu uzaktan yürütmek için aşağıdaki komutu kullanın:
ssh @ ”Örneğin, uzak sistemdeki /tmp dizinindeki dosyaların listesini almak için şunu çalıştırırsınız:
ssh [email ‘ls /tmp’# Çoklu Komut Yürütme:
Birden fazla komutu uzaktan yürütmek için aşağıdaki komutu kullanın:
ssh @ ‘ ; ; ‘Örneğin, bir dosyanın yedeğini oluşturmak ve onu sıkıştırmak için şunu çalıştırırsınız:
ssh [email ‘cp /var/log/syslog /tmp/syslog.bak ; gzip /tmp/syslog.bak’
Her iki durumda da, tekli ve çoklu komut yürütmede, komutların tek tırnak içine alındığını unutmayın.
3. Dosyaları Güvenli Bir Şekilde Yükleyerek ve İndirerek Aktarın
SSH'yi PowerShell ile kullanmanın bir diğer gelişmiş tekniği, dosyaları yerel ve uzak sistemler arasında güvenli bir şekilde aktarma yeteneğidir. Bu amaçla PowerShell’in OpenSSH istemcisine entegre olan SCP (Güvenli Kopyalama Protokolü) kullanacağız.
# Dosyaları Yükleme:
Uzak bir sisteme dosya yüklemek için aşağıdaki komutu çalıştırın:
scp @:Örneğin, file.txt dosyasını Belgeler klasörünüzden uzaktaki sistemin /tmp dizinine yüklemek için şunu çalıştırırsınız:
scp C:UsersYourUsernameDocumentsfile.txt [email :/tmp# Dosyaları İndirme:
Uzak bir sistemden dosya indirmek için aşağıdaki komutu çalıştırın:
scp @:Örneğin, file.txt dosyasını uzak sistemin /tmp dizininden İndirilenler klasörünüze indirmek için şunu çalıştırırsınız:
scp [email :/tmp/file.txt C:UsersYourUsernameDownloads4. PowerShell-SSH Betikleriyle Görevleri Otomatikleştirme
SSH'yi PowerShell komut dosyalarınıza dahil ederek uzak sistemleri içeren çeşitli görevleri otomatikleştirebilirsiniz. Aşağıda, birden fazla uzak sistemdeki disk kullanımını kontrol eden ve kullanım belirli bir eşiği aştığında e-posta uyarısı gönderen örnek bir komut dosyası verilmiştir:
$servers = @( ‘server1.example.com’, ‘server2.example.com’, ‘server3.example.com’ )
$threshold = 90
foreach ($server in $servers) {
$diskUsage = ssh user@$server ‘df –output=pcent / | tail -1 | tr -dc “0-9″‘
if ([int]$diskUsage -gt $threshold) {
Send-MailMessage -From “[email ” -To “[email ” -Subject “Disk Usage Alert: $server” -Body “The disk usage on $server ($diskUsage%) has exceeded the threshold ($threshold%).” -SmtpServer “smtp.example.com”
}
}Bu örnekte komut dosyası, $servers adlı bir diziden sunucu adlarının listesini okur. Daha sonra uzak bir df komutunu çalıştırarak disk kullanımını kontrol ederek her sunucuyu yineler. Kullanım belirtilen eşiği aşarsa Send-MailMessage cmdlet'i kullanılarak bir e-posta uyarısı gönderilir.
5. Basitleştirilmiş Oturum Açma ve Gelişmiş Güvenlik için SSH Anahtarlarını Yönetme
SSH anahtarlarını yönetmek, hem oturum açma sürecini basitleştirmek hem de güvenliği artırmak açısından çok önemlidir. PowerShell ile SSH anahtarlarını şu şekilde oluşturabilir, kopyalayabilir ve kullanabilirsiniz:
# SSH Anahtar Çifti Oluşturuluyor:
Yeni bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın:
ssh-keygen.exeBu, varsayılan konum olan %USERPROFILE%.sshid_rsa'da genel ve özel bir anahtar çifti oluşturacaktır.
# Genel Anahtarın Uzak Bir Sisteme Kopyalanması:
Genel anahtarı uzak sistemin yetkili anahtarlar dosyasına kopyalamak için aşağıdaki komutu çalıştırın:
ssh-copy-id @Genel anahtar uzaktaki sisteme eklendiğinde, şifre girmeden kimlik doğrulaması yapabilirsiniz.
Kapanış
Bu gelişmiş teknikleri cephaneliğinize dahil ederek SSH'yi PowerShell ile nasıl kullanacağınıza dair tüm potansiyeli ortaya çıkarabilirsiniz. SSH oturumları oluşturmaktan uzaktan komutları yürütmeye, dosyaları güvenli bir şekilde aktarmaya, görevleri otomatikleştirmeye ve SSH anahtarlarını yönetmeye kadar bu yöntemler iş akışınızı güçlendirecek ve sistem yönetimi ve otomasyon konusundaki uzmanlığınızı güçlendirecektir. Açık fikirlilikle ve deneme isteğiyle SSH'yi PowerShell ile kullanarak elde edebileceklerinizin sınırı yoktur.
Windows 11'de Oh My Posh ile PowerShell istemi nasıl kurulur
PowerShell'i 2 Saatten Kısa Sürede Öğrenin
Bir PowerShell betiğinde SSH'yi nasıl kullanabilirim?
Bir PowerShell betiğinde SSH'nin kullanımı SSH.NET kitaplığı veya yerleşik Windows OpenSSH istemcisi kullanılarak yapılabilir. Her iki yöntemin de nasıl kullanılacağı aşağıda açıklanmıştır:
1. SSH.NET Kitaplığını Kullanma:
Öncelikle aşağıdaki komutu çalıştırarak SSH.NET kütüphanesini kurmanız gerekir:
Install-Package -Name SSH.NETKurulduktan sonra PowerShell betiğinizde aşağıdaki gibi kullanabilirsiniz:
# Import the SSH.NET library
Import-Module -Name Renci.SshNet
# Set your SSH credentials and target host
$UserName = “”
$Password = ConvertTo-SecureString “” -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential($UserName, $Password)
$Host = “”
# Create an SSH connection
$Connection = New-Object Renci.SshNet.SshClient($Host, $Credential.UserName, $Credential.Password)
$Connection.Connect()
# Execute a command on the remote host
$Command = “ls”
$Result = $Connection.RunCommand($Command)
# Display the command output
Write-Host $Result.Output
# Close the connection
$Connection.Disconnect()2. Windows OpenSSH İstemcisini Kullanma:
Windows OpenSSH istemcisi, Windows 10 (derleme 1809) ve sonraki sürümlerde varsayılan olarak mevcuttur. PowerShell betiğinizde kullanmak için şu adımları izleyin:
# Set your SSH credentials and target host
$UserName = “”
$Password = “”
$Host = “”
# Create a PSCredential object
$SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential($UserName, $SecurePassword)
# Execute a command on the remote host using the ssh command
$Command = “ls”
$Result = Invoke-Command -ScriptBlock {
ssh $args[0]@$args[1] $args[2]
} -ArgumentList $Credential.UserName, $Host, $Command
# Display the command output
Write-Host $ResultWindows 10 PowerShell'de SSH'yi nasıl başlatabilirim?
Windows 10 PowerShell içerisinde SSH'yi başlatmak için sisteminizde OpenSSH istemcisinin kurulu olduğundan emin olmanız gerekir. Şu adımları izleyin:
1. OpenSSH istemcisini etkinleştirin:
Başlat düğmesine sağ tıklayıp Windows PowerShell (Yönetici)'yi seçerek veya PowerShell'i arayarak PowerShell'i yönetici ayrıcalıklarıyla açın. Başlat menüsünde sağ tıklayıp Yönetici olarak çalıştır'ı seçin.
OpenSSH istemcisini etkinleştirmek için aşağıdaki komutu girin:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.02. Kurulumu doğrulayın:
OpenSSH istemcisinin kurulduğunu onaylamak için PowerShell'de aşağıdaki komutu yazın:
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’Kurulum başarılı olduysa OpenSSH özelliklerinin bir listesini ilgili durumlarıyla birlikte göreceksiniz. OpenSSH istemcisi Yüklendi durumuyla listelenmelidir.
3. Bir SSH bağlantısı başlatın:
Artık OpenSSH istemcisi yüklendiğine göre, aşağıdaki komutu kullanarak PowerShell içinde bir SSH bağlantısı başlatabilirsiniz:
ssh username@hostnamekullanıcı adı kısmını uzak kullanıcı hesabınızla ve ana bilgisayar adı kısmını uzak sunucunun IP adresi veya alan adı ile değiştirin. Bu komutu girdikten sonra sizden şifreniz istenecektir.
Bu adımları takip ederek Windows 10 PowerShell içerisinde SSH bağlantısını başarıyla başlatabilirsiniz.
PowerShell ile nasıl SSH anahtarı oluşturulabilir?
PowerShell ile SSH anahtarı oluşturmak için ssh-keygen komutunu kullanabilirsiniz. Aşağıdaki adımlar süreç boyunca size yol gösterecektir:
1. PowerShell'i yönetici olarak açın.
2. OpenSSH modülünün kurulu olduğundan emin olmak için aşağıdaki komutu çalıştırın:
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’3. Modül kurulu değilse aşağıdaki komutları kullanarak kurabilirsiniz:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.04. OpenSSH modülü kurulduktan sonra ssh-keygen komutunu çalıştırarak bir SSH anahtarı oluşturabilirsiniz:
ssh-keygen -t rsa -b 4096 -C “[email ”[e-posta korumalı] kısmını gerçek e-posta adresinizle değiştirin. -t seçeneği, oluşturulacak anahtarın türünü (bu durumda RSA) belirtir, -b seçeneği anahtar uzunluğunu (4096 bit) ve -C seçeneği, anahtarın daha kolay tanımlanması için bir açıklama ekler.
5. Komut, özel anahtarı kaydetmek için bir dosya yolu girmenizi isteyecektir. Varsayılan konumu kullanmak veya tercih edilirse özel bir yol sağlamak için Enter tuşuna basın.
6. Daha sonra özel anahtarı güvence altına almak için bir parola girmeniz istenecektir. Bir parola girebilir veya parola olmaması durumunda boş bırakabilirsiniz.
ssh-keygen komutu bir genel ve bir özel anahtar oluşturacaktır. Ortak anahtar .pub uzantısına sahip olacak ve kaynaklara erişime izin vermek için başkalarıyla paylaşılabilecek. Özel anahtar güvenli bir şekilde saklanmalı ve asla paylaşılmamalıdır.
PowerShell'de SSH Windows komutuyla nasıl kullanılabilir?
PowerShell'de SSH'yi Windows komutuyla kullanmak, uzak sistemleri güvenli bir şekilde yönetmenin harika bir yoludur. Windows 10 ve Windows Server 2019'dan başlayarak, OpenSSH artık varsayılan olarak dahil edilmiştir ve SSH protokolünü kullanarak uzak ana bilgisayarlara bağlanmayı kolaylaştırmaktadır. PowerShell'de SSH'yi şu şekilde kullanabilirsiniz:
1. OpenSSH'yi yükleyin (İsteğe bağlı): Daha eski bir Windows sürümü kullanıyorsanız veya OpenSSH yüklü değilse aşağıdaki komutu çalıştırarak yükleyebilirsiniz:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.02. SSH Aracısını başlatın: Kimlik doğrulama için SSH anahtarlarını kullanmadan önce SSH aracısı hizmetini başlatmanız gerekir. Hizmet başlangıç türünü otomatik olarak ayarlamak ve başlatmak için aşağıdaki komutu çalıştırın:
Set-Service -Name ssh-agent -StartupType Automatic; Start-Service ssh-agent3. Bir SSH Anahtarı oluşturun (İsteğe bağlı): Henüz bir SSH anahtar çiftiniz yoksa aşağıdaki komutu kullanarak bir tane oluşturabilirsiniz:
ssh-keygen -t rsa -b 4096Bu, 4096 bit anahtar boyutuna sahip yeni bir RSA anahtar çifti oluşturacaktır.
4. Genel SSH Anahtarını Uzak Ana Bilgisayara Kopyalayın: Parola olmadan kimlik doğrulaması yapmak için, aşağıdaki komutu kullanarak genel SSH anahtarınızı uzak ana makineye kopyalayın:
ssh-copy-id username@remote-hostkullanıcı adı'nı uzak ana makinedeki gerçek kullanıcı adınızla ve uzak ana bilgisayar'ı uzak sistemin ana bilgisayar adı veya IP adresiyle değiştirin.
5. SSH aracılığıyla Uzak Ana Bilgisayara Bağlan: Artık SSH komutunu kullanarak uzak ana bilgisayara şu şekilde bağlanabilirsiniz:
ssh username@remote-hostTekrar kullanıcı adı ve uzak-anasistem'i uygun değerlerle değiştirin.
Artık PowerShell kullanarak SSH aracılığıyla uzak ana bilgisayara bağlandınız. Uzak sistem üzerinde herhangi bir komutu çalıştırabilir, dosyaları güvenli bir şekilde aktarabilir ve uzaktan yönetimle ilgili çeşitli görevleri gerçekleştirebilirsiniz.
PowerShell komut satırını kullanarak uzak sunucuyla nasıl SSH bağlantısı kurabilirim?
PowerShell komut satırını kullanarak uzak bir sunucuyla SSH bağlantısı kurmak için SSH komutunu ve ardından kullanıcı adı ve uzak sunucunun IP adresi veya ana bilgisayar adı gibi gerekli parametreleri kullanabilirsiniz. İşte bunun nasıl yapılacağına dair adım adım bir kılavuz:
1. Windows Tuşu + X tuşlarına basarak ve PowerShell'i (Yönetici) seçerek PowerShell'i açın.
2. Henüz yüklü değilse OpenSSH paketini/modülünü yükleyin. Aşağıdaki komutu kullanarak yükleyebilirsiniz:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.03. OpenSSH paketi yüklendikten sonra uzak sunucuyla bağlantı kurmak için ssh komutunu kullanabilirsiniz. Temel sözdizimi şöyledir:
ssh username@remote-serverkullanıcı adı'nı uzak sunucunuzun kullanıcı adı ile ve uzak-sunucu'yu uzak sunucunun IP adresi veya ana bilgisayar adı ile değiştirin.
Örneğin:
ssh [email 4. İstendiğinde uzak kullanıcı hesabının parolasını girin. Kimlik doğrulama başarılı olduğunda uzak sunucuya bağlanacaksınız ve uzaktaki sistemde komutları çalıştırmaya başlayabilirsiniz.
Uzak sunucunun çalışan ve gelen bağlantıları dinleyen bir SSH sunucusuna sahip olması gerektiğini unutmayın.
PowerShell'de SSH anahtarlarını yönetmek ve SSH bağlantılarını yapılandırmak için temel komutlar nelerdir?
PowerShell'de, OpenSSH yardımcı programlarının ve yerel PowerShell komutlarının bir kombinasyonunu kullanarak SSH anahtarlarını yönetebilir ve SSH bağlantılarını yapılandırabilirsiniz. İşte temel komutlar:
1. ssh-keygen: Bu komut, SSH protokolü için kimlik doğrulama anahtarlarını oluşturmak, yönetmek ve dönüştürmek için kullanılır. Yeni bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın:
ssh-keygen -t rsa -b 4096 -C “[email ”2. Get-Content: Bu komut bir dosyanın içeriğini okumak için kullanılır. Uzak sunucunun yetkili_anahtarlar dosyasına eklemeniz gereken ortak anahtarı görüntülemek için bu komutu kullanabilirsiniz:
Get-Content C:UsersYourUsername.sshid_rsa.pub3. ssh-copy-id: Bu komut, genel anahtarınızı uzak bir sunucuya kopyalamanıza olanak tanır. Linux için Windows Alt Sistemi (WSL) aracılığıyla veya scp gibi alternatif bir uygulama kullanılarak kurulabilir. Bunu nasıl kullanabileceğiniz aşağıda açıklanmıştır:
ssh-copy-id user@remote_serverssh-copy-id'niz yoksa alternatif olarak scp'yi kullanabilirsiniz:
scp C:UsersYourUsername.sshid_rsa.pub user@remote_server:~/temp.pub4. ssh: Uzak sunucuya SSH bağlantısı başlatmak için kullanılan komut. SSH anahtar çiftinizi kurduktan sonra aşağıdaki komutu kullanarak uzak sunucuya bağlanabilirsiniz:
ssh user@remote_server5. Yeni Öğe: Bu komut, dosya veya dizin gibi yeni bir öğe oluşturur. SSH istemciniz için ~/.ssh dizininde bir config dosyası oluşturmanız gerekebilir. Bu dosyayı oluşturmak için aşağıdaki komutu kullanın:
New-Item -Path C:UsersYourUsername.sshconfig -ItemType File6. İçerik Ekle: Bu komut, bir dosyaya içerik eklemek için kullanılır. SSH config dosyanıza belirli ayarlar eklemek için bu komutu kullanabilirsiniz. Örneğin, uzak bir sunucuya yönelik bir takma ad yapılandırmak için config dosyanıza aşağıdaki satırları ekleyin:
Add-Content -Path C:UsersYourUsername.sshconfig -Value “Host remote_aliasnHostName remote_servernUser user`nIdentityFile ~/.ssh/id_rsa”Bu PowerShell komutları ve OpenSSH yardımcı programlarıyla SSH anahtarlarını etkili bir şekilde yönetebilir ve SSH bağlantılarını yapılandırabilirsiniz.
Birden fazla uzak sunucu için PowerShell'de SSH oturumlarını otomatikleştirmek için adım adım kılavuz sağlayabilir misiniz?
Bu kılavuzda, Pode modülünü kullanarak birden fazla uzak sunucu için PowerShell'de SSH oturumlarının nasıl otomatikleştirileceğini göstereceğiz. Pode, SSH bağlantılarını yönetmek ve otomatikleştirmek için platformlar arası bir modüldür.
1. Adım: Pode modülünü yükleyin
Öncelikle aşağıdaki komutu çalıştırarak PowerShell Galerisinden Pode modülünü yükleyin:
Install-Module -Name Pode2. Adım: Pode modülünü içe aktarın
İşlevleri kullanılabilir hale getirmek için Pode modülünü PowerShell oturumunuza aktarın:
Import-Module Pode3. Adım: Uzak sunucuları ve kimlik bilgilerini tanımlayın
Bir dizi uzak sunucu IP'si veya ana bilgisayar adı ve bunlara karşılık gelen kimlik bilgileri oluşturun. Yer tutucuları gerçek sunucularınız ve kimlik bilgilerinizle değiştirdiğinizden emin olun:
$RemoteServers = @(
@{
Host = ‘192.168.1.1’
Username = ‘User1’
Password = ‘Password1’
},
@{
Host = ‘192.168.1.2’
Username = ‘User2’
Password = ‘Password2’
}
)4. Adım: Otomasyon komut dosyasını tanımlayın
Her uzak sunucuda yürütmek istediğiniz komutları içeren bir komut dosyası bloğu oluşturun:
$ScriptToExecute = {
Param($RemoteServer)
# Establish SSH session
$Session = New-PodeSshSession -HostName $RemoteServer.Host -UserName $RemoteServer.Username -Password $RemoteServer.Password
# Execute commands
$Result = Invoke-PodeSshCommand -Session $Session -Command ‘uname -a’
# Print results
Write-Host “Results from $($RemoteServer.Host):n$($Result.Output)n”
# Close SSH session
Close-PodeSshSession -Session $Session
}5. Adım: SSH oturumlarını otomatikleştirin
Uzak sunucular arasında dolaşın, komut dosyası bloğunu çağırın ve yürütün:
ForEach ($RemoteServer in $RemoteServers) {
Invoke-Command -ScriptBlock $ScriptToExecute -ArgumentList $RemoteServer
}6. Adım: Komut dosyasını kaydedin ve çalıştırın
Metnin tamamını bir PowerShell betik dosyasına (ör. AutomateSSH.ps1) kaydedin ve PowerShell oturumunuzda yürütün:
.AutomateSSH.ps1Bu komut dosyası, birden fazla uzak sunucunuz için SSH oturumlarını otomatikleştirecek ve tanımlı komutları her birinde çalıştıracaktır. Komut dosyasını özel ihtiyaçlarınıza ve gereksinimlerinize göre değiştirdiğinizden emin olun.