当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 掌握安全连接:如何结合使用 SSH 和 PowerShell 进行高效远程管理

作者:精品下载站 日期:2024-12-14 04:08:41 浏览:16 分类:玩电脑

掌握安全连接:如何结合使用 SSH 和 PowerShell 进行高效远程管理


# 增强您的工作流程:通过 PowerShell 使用 SSH 的 5 种高级方法

在软件工程领域,PowerShell 作为一种多功能且强大的系统管理工具而备受瞩目,许多用例都涉及脚本和自动化。将 Secure Shell (SSH) 与 PowerShell 结合使用,可以将各种系统的控制和管理提升到一个全新的水平,使您的工作更加高效和简化。但您是否充分发挥了这一强大组合的全部潜力?

在本文中,我们将通过展示五种高级技术来深入探讨如何将 SSH 与 PowerShell 结合使用,这些技术将增强您的工作流程并提升您的专业知识。拿起您的终端,让我们开始吧!

1. 使用 PowerShell 建立 SSH 会话

首先,您需要在本地计算机和远程系统之间建立 SSH 会话。为此,我们将使用 PowerShell 中内置的 SSH 客户端。

# 先决条件:

- 确保您的计算机上安装了 Windows 10 build 1809 或更高版本。
- 应在您的 Windows 10 设备上启用 OpenSSH 客户端功能。为此,请导航至“设置”>“应用程序”>“可选功能”,搜索 OpenSSH 客户端,然后单击安装(如果尚未安装)。

# 连接到远程系统:

满足先决条件后,打开 PowerShell 并运行以下命令建立 SSH 连接:

ssh @

将“替换为远程系统的用户名,将”替换为远程系统的主机名或IP地址。

2. 使用PowerShell和SSH远程执行命令

将 SSH 与 PowerShell 结合使用的优点之一是能够在远程系统上执行命令,而无需手动登录。本节将演示如何使用 SSH 和 PowerShell 远程执行命令。

# 单个命令执行:

要远程执行单个命令,请使用以下命令:

ssh @ ”

例如,要获取远程系统上 /tmp 目录中的文件列表,您可以运行:

ssh [email  ‘ls /tmp’

# 多个命令执行:

要远程执行多个命令,请使用以下命令:

ssh @ ‘ ; ; ‘

例如,要创建文件的备份并压缩它,您可以运行:

ssh [email  ‘cp /var/log/syslog /tmp/syslog.bak ; gzip /tmp/syslog.bak’

请记住,在这两种情况下,无论是单个命令还是多个命令执行,命令都用单引号引起来。

3.传输文件安全上传和下载

将 SSH 与 PowerShell 结合使用的另一项高级技术是能够在本地和远程系统之间安全地传输文件。为此,我们将使用 SCP(安全复制协议),它集成到 PowerShell 的 OpenSSH 客户端中。

# 上传文件:

要将文件上传到远程系统,请运行以下命令:

scp @:

例如,要将文件 file.txt 从 Documents 文件夹上传到远程系统的 /tmp 目录,您可以运行:

scp C:UsersYourUsernameDocumentsfile.txt [email :/tmp

# 下载文件:

要从远程系统下载文件,请运行以下命令:

scp @:

例如,要将文件 file.txt 从远程系统的 /tmp 目录下载到您的 Downloads 文件夹,您可以运行:

scp [email :/tmp/file.txt C:UsersYourUsernameDownloads

4. 使用 PowerShell-SSH 脚本自动执行任务

通过将 SSH 合并到 PowerShell 脚本中,您可以自动执行涉及远程系统的各种任务。以下是一个示例脚本,用于检查多个远程系统上的磁盘使用情况,并在使用情况超过特定阈值时发送电子邮件警报:

$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”
}
}

在此示例中,脚本从名为 $servers 的数组中读取服务器名称列表。然后它会遍历每个服务器,通过执行远程 df 命令来检查磁盘使用情况。如果使用量超过指定阈值,则会使用 Send-MailMessage cmdlet 发送电子邮件警报。

5. 管理 SSH 密钥以简化登录并增强安全性

管理 SSH 密钥对于简化登录过程和增强安全性至关重要。以下是通过 PowerShell 生成、复制和使用 SSH 密钥的方法:

# 生成 SSH 密钥对:

要生成新的 SSH 密钥对,请运行以下命令:

ssh-keygen.exe

这将在默认位置 %USERPROFILE%.sshid_rsa 中创建公钥和私钥对。

# 将公钥复制到远程系统:

要将公钥复制到远程系统的授权密钥文件,请运行以下命令:

ssh-copy-id @

将公钥添加到远程系统后,您无需输入密码即可进行身份验证。

总结

通过将这些先进技术融入您的武器库中,您可以释放如何将 SSH 与 PowerShell 结合使用的全部潜力。从建立 SSH 会话到执行远程命令、安全传输文件、自动化任务和管理 SSH 密钥,这些方法将增强您的工作流程并增强您在系统管理和自动化方面的专业知识。怀着开放的心态并愿意尝试,使用 SSH 和 PowerShell 可以实现无限的目标。

如何在 Windows 11 上使用 Oh My Posh 设置 PowerShell 提示符

不到 2 小时即可学会 PowerShell

如何在 PowerShell 脚本中使用 SSH?

可以使用 SSH.NET 库或内置的 Windows OpenSSH 客户端 在 PowerShell 脚本中使用 SSH。以下是这两种方法的使用方法:

1. 使用 SSH.NET 库:

首先,您需要通过运行以下命令来安装 SSH.NET 库:

Install-Package -Name SSH.NET

安装后,您可以在 PowerShell 脚本中使用它,如下所示:

# 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客户端:

默认情况下,Windows OpenSSH 客户端在 Windows 10(内部版本 1809)及更高版本中可用。要在 PowerShell 脚本中使用它,请按照下列步骤操作:

# 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 $Result

请记住将 替换为您自己的信息。

如何在 Windows 10 PowerShell 中启动 SSH?

要在 Windows 10 PowerShell 中启动 SSH,您需要确保系统上安装了 OpenSSH 客户端。请按照下列步骤操作:

1. 启用 OpenSSH 客户端:
右键单击“开始”按钮并选择 Windows PowerShell(管理员) 或搜索 PowerShell,以管理权限打开 PowerShell在“开始”菜单中,右键单击并选择以管理员身份运行

输入以下命令启用 OpenSSH 客户端:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

2. 验证安装:
要确认 OpenSSH 客户端已安装,请在 PowerShell 中键入以下命令:

Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’

如果安装成功,您将看到 OpenSSH 功能列表及其各自的状态。 OpenSSH 客户端应列出,状态为“已安装”。

3. 发起 SSH 连接:
现在 OpenSSH 客户端已安装,您可以使用以下命令在 PowerShell 中发起 SSH 连接:

ssh username@hostname

username 替换为您的远程用户帐户,将 hostname 替换为远程服务器的 IP 地址或域名。输入此命令后,系统将提示您输入密码。

通过执行以下步骤,您可以在 Windows 10 PowerShell 中成功启动 SSH 连接。

如何使用 PowerShell 生成 SSH 密钥?

要使用 PowerShell 生成 SSH 密钥,您可以使用 ssh-keygen 命令。以下步骤将指导您完成整个过程:

1. 以管理员身份打开 PowerShell

2. 运行以下命令以确保 OpenSSH 模块已安装:

Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’

3. 如果未安装该模块,可以使用以下命令安装:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

4. 安装 OpenSSH 模块后,您可以通过运行 ssh-keygen 命令生成 SSH 密钥:

ssh-keygen -t rsa -b 4096 -C “[email ”

[email 替换为您的实际电子邮件地址。 -t 选项指定要生成的密钥类型(在本例中为 RSA),-b 选项设置密钥长度(4096 位),-C 选项添加注释以便于识别密钥。

5. 该命令将提示您输入保存私钥的文件路径。按 Enter 键使用默认位置,或者根据需要提供自定义路径。

6. 接下来,系统将要求您输入密码以保护私钥。您可以输入密码,也可以将其留空(不输入密码)。

ssh-keygen 命令将生成公钥和私钥。公钥将具有 .pub 扩展名,可以与其他人共享以允许访问资源。私钥应妥善保管,切勿共享。

如何在 PowerShell 中通过 Windows 命令使用 SSH?

在 PowerShell 中将 SSH 与 Windows 命令结合使用是安全管理远程系统的好方法。从 Windows 10 和 Windows Server 2019 开始,现在默认包含 OpenSSH,可以轻松使用 SSH 协议连接到远程主机。以下是在 PowerShell 中使用 SSH 的方法:

1. 安装 OpenSSH(可选):如果您使用的是较旧的 Windows 版本或者没有安装 OpenSSH,您可以通过运行以下命令来安装它:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

2. 启动 SSH 代理:在使用 SSH 密钥进行身份验证之前,您需要启动 SSH 代理服务。执行以下命令,将服务启动类型设置为自动并启动:

Set-Service -Name ssh-agent -StartupType Automatic; Start-Service ssh-agent

3. 创建 SSH 密钥(可选):如果您还没有 SSH 密钥对,可以使用以下命令创建一个:

ssh-keygen -t rsa -b 4096

这将生成密钥大小为 4096 位的新 RSA 密钥对。

4. 将 SSH 公钥复制到远程主机:要在没有密码的情况下进行身份验证,请使用以下命令将 SSH 公钥复制到远程主机:

ssh-copy-id username@remote-host

username 替换为您在远程主机上的实际用户名,并将 remote-host 替换为远程系统的主机名或 IP 地址。

5. 通过 SSH 连接到远程主机:现在您可以使用 SSH 命令连接到远程主机,如下所示:

ssh username@remote-host

再次,将 usernameremote-host 替换为适当的值。

现在您已使用 PowerShell 通过 SSH 连接到远程主机。您可以在远程系统上执行任何命令、安全地传输文件以及执行与远程管理相关的各种任务。

如何使用 PowerShell 命令行与远程服务器建立 SSH 连接?

要使用 PowerShell 命令行与远程服务器建立 SSH 连接,您可以使用 SSH 命令,后跟所需的参数,例如用户名和远程服务器的 IP 地址或主机名。以下是有关如何执行此操作的分步指南:

1. 按 Windows 键 + X 并选择 PowerShell(管理员),打开 PowerShell。

2. 安装 OpenSSH 软件包/模块(如果尚未安装)。您可以使用以下命令安装它:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

3. 安装 OpenSSH 软件包后,您可以使用 ssh 命令与远程服务器建立连接。基本语法是:

ssh username@remote-server

username 替换为远程服务器的用户名,将 remote-server 替换为远程服务器的 IP 地址或主机名。

例如:

ssh [email 

4. 出现提示时,输入远程用户帐户的密码。身份验证成功后,您将连接到远程服务器,并且可以开始在远程系统上运行命令。

请记住,远程服务器必须运行 SSH 服务器并侦听传入连接。

在 PowerShell 中管理 SSH 密钥和配置 SSH 连接的基本命令有哪些?

在 PowerShell 中,您可以结合使用 OpenSSH 实用程序和本机 PowerShell 命令来管理 SSH 密钥并配置 SSH 连接。以下是基本命令:

1. ssh-keygen:该命令用于生成、管理和转换 SSH 协议的身份验证密钥。要创建新的 SSH 密钥对,请运行以下命令:

ssh-keygen -t rsa -b 4096 -C “[email ”

2. Get-Content:该命令用于读取文件的内容。您可以使用此命令显示需要添加到远程服务器的 authorized_keys 文件中的公钥:

Get-Content C:UsersYourUsername.sshid_rsa.pub

3. ssh-copy-id:此命令允许您将公钥复制到远程服务器。它可以通过 Windows Subsystem for Linux (WSL) 或使用 scp 等替代实现进行安装。使用方法如下:

ssh-copy-id user@remote_server

如果您没有ssh-copy-id,您可以使用scp作为替代:

scp C:UsersYourUsername.sshid_rsa.pub user@remote_server:~/temp.pub

4. ssh:用于发起与远程服务器的 SSH 连接的命令。设置 SSH 密钥对后,您可以使用以下命令连接到远程服务器:

ssh user@remote_server

5. New-Item:此命令创建一个新项目,例如文件或目录。您可能需要在 ~/.ssh 目录中为 SSH 客户端创建一个 config 文件。要创建此文件,请使用以下命令:

New-Item -Path C:UsersYourUsername.sshconfig -ItemType File

6. Add-Content:该命令用于将内容附加到文件中。您可以使用此命令将特定设置添加到 SSH config 文件中。例如,要配置远程服务器的别名,请将以下行添加到您的 config 文件中:

Add-Content -Path C:UsersYourUsername.sshconfig -Value “Host remote_aliasnHostName remote_servernUser user`nIdentityFile ~/.ssh/id_rsa”

使用这些 PowerShell 命令和 OpenSSH 实用程序,您可以有效地管理 SSH 密钥并配置 SSH 连接。

您能否提供在 PowerShell 中为多个远程服务器自动执行 SSH 会话的分步指南?

在本指南中,我们将演示如何使用 Pode 模块在 PowerShell 中为多个远程服务器自动执行 SSH 会话。 Pode 是一个跨平台模块,用于管理和自动化 SSH 连接。

第1步:安装Pode模块

首先,通过运行以下命令从 PowerShell Gallery 安装 Pode 模块:

Install-Module -Name Pode

第2步:导入Pode模块

将 Pode 模块导入到 PowerShell 会话中以使功能可用:

Import-Module Pode

第 3 步:定义远程服务器和凭据

创建远程服务器 IP 或主机名及其相应凭据的数组。确保将占位符替换为您的实际服务器和凭据:

$RemoteServers = @(
@{
Host = ‘192.168.1.1’
Username = ‘User1’
Password = ‘Password1’
},
@{
Host = ‘192.168.1.2’
Username = ‘User2’
Password = ‘Password2’
}
)

第 4 步:定义自动化脚本

使用要在每个远程服务器上执行的命令创建一个脚本块:

$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 步:自动化 SSH 会话

循环访问远程服务器,调用脚本块并执行它:

ForEach ($RemoteServer in $RemoteServers) {
Invoke-Command -ScriptBlock $ScriptToExecute -ArgumentList $RemoteServer
}

第 6 步:保存并运行脚本

将整个文本保存到 PowerShell 脚本文件中(例如 AutomateSSH.ps1)并在 PowerShell 会话中执行它:

.AutomateSSH.ps1

该脚本将为您的多个远程服务器自动执行 SSH 会话,并在每个服务器上执行定义的命令。确保根据您的具体需要和要求修改脚本。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯