ssh-copy-id4.ps1
<#
脚本目的:
从 win、linux 中复制 [本机 ssh 公钥] ,到 [目的 linux 版 ssh 服务器] 。
前提条件:
install-module winscp
用法:
ssh-copy-id4.ps1 -目的 ip 1.2.3.4
建议保存编码为:bom 头 + utf8
#>
Param
(
$目的 ip = '192.168.1.2'
)
#先运行 ssh-keygen 回车,产生 key 文件。
https://github.com/PowerShell/Win32-OpenSSH/releasesif (($PSEdition -eq 'Desktop') -or (test-path c:\))
{
$key 文件 1 = "$env:USERPROFILE\.ssh\id_rsa.pub"
$key 文件 2 = "$env:USERPROFILE\.ssh\authorized_keys"
Copy-Item -LiteralPath $key 文件 1 -Destination $key 文件 2
}
if (($PSEdition -eq 'Core') -or (test-path /tmp))
{
$key 文件 1 = "/root/.ssh/id_rsa.pub"
$key 文件 2 = "/root/.ssh/authorized_keys"
Copy-Item -LiteralPath $key 文件 1 -Destination $key 文件 2
}
$用户名 = 'root'
$用户密码明文 = '这里填入你的 ssh 密码明文。'
$用户密码密文 = ConvertTo-SecureString $用户密码明文 -AsPlainText -Force
$我的登陆凭据 = New-Object System.Management.Automation.PSCredential ($用户名,$用户密码密文)
#QQ 群号=183173532,名称=powershell 交流群,2019-02-21
$sftp 连接参数 = new-WinSCPSessionOption -Protocol Sftp -HostName $目的 ip -Credential $我的登陆凭据
$指纹 = Get-WinSCPHostKeyFingerprint -SessionOption $sftp 连接参数
$sftp 连接参数.SshHostKeyFingerprint = $指纹
$sftp 连接 = new-WinSCPSession -SessionOption $sftp 连接参数
if (Test-WinSCPPath -Path '/root/.ssh' -WinSCPSession $sftp 连接)
{
Remove-WinSCPItem -Path '/root/.ssh' -Confirm:$false -WinSCPSession $sftp 连接
}
$权限 700 = New-WinSCPTransferOption -FilePermissions (New-WinSCPItemPermission -Octal 700)
New-WinSCPItem -Path '/root/.ssh' -ItemType Directory -TransferOptions $权限 700 -WinSCPSession $sftp 连接
$权限 600 = New-WinSCPTransferOption -FilePermissions (New-WinSCPItemPermission -Octal 600)
Send-WinSCPItem -LocalPath $key 文件 2 -RemotePath '/root/.ssh/' -TransferOptions $权限 600 -WinSCPSession $sftp 连接
Remove-WinSCPSession -WinSCPSession $sftp 连接