0

我安装了 Posh-SSH:Install-Module -Name Posh-SSH

尝试执行 scp 或 ssh 时,我得到如下内容。为什么?

scp : The term 'scp' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ scp
+ ~~~
    + CategoryInfo          : ObjectNotFound: (scp:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

更新 在@tommymaynard 的帮助下,我可以看到所有可用的命令:

PS C:\WINDOWS\system32> $x = Find-Module -Name Posh-SSH
PS C:\WINDOWS\system32> $x.AdditionalMetadata.Functions -split ' '
Get-PoshSSHModVersion
Get-SFTPChildItem
Get-SFTPContent
Get-SFTPLocation
Get-SFTPPathAttribute
Get-SFTPSession
Get-SSHPortForward
Get-SSHSession
Get-SSHTrustedHost
Invoke-SSHCommand
Invoke-SSHCommandStream
Invoke-SSHStreamExpectAction
Invoke-SSHStreamExpectSecureAction
Invoke-SSHStreamShellCommand
Move-SFTPItem
New-SFTPFileStream
New-SFTPItem
New-SFTPSymlink
New-SSHDynamicPortForward
New-SSHLocalPortForward
New-SSHRemotePortForward
New-SSHShellStream
New-SSHTrustedHost
Remove-SFTPItem
Remove-SFTPSession
Remove-SSHSession
Remove-SSHTrustedHost
Rename-SFTPFile
Set-SFTPContent
Set-SFTPLocation
Set-SFTPPathAttribute
Start-SSHPortForward
Stop-SSHPortForward
Test-SFTPPath
PS C:\WINDOWS\system32> $x.AdditionalMetadata.Cmdlets -split ' '
Get-SCPFile
Get-SCPFolder
Get-SCPItem
Get-SFTPFile
Get-SFTPItem
New-SFTPSession
New-SSHSession
Set-SCPFile
Set-SCPFolder
Set-SCPItem
Set-SFTPFile
Set-SFTPFolder
Set-SFTPItem

从那里,您将使用哪个命令来替换下面的“scp”和“ssh”(参考:https ://code.visualstudio.com/docs/remote/troubleshooting#_configuring-key-based-authentication )?

$REMOTEHOST="your-user-name-on-host@host-fqdn-or-ip-goes-here"

scp "$env:USERPROFILE\.ssh\id_rsa.pub" "${REMOTEHOST}:~/tmp.pub"
ssh "$REMOTEHOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
4

1 回答 1

0

您安装的模块不包含名为“scp”的函数/cmdlet。我没有安装模块,但确实运行了以下命令来确定模块中函数和 cmdlet 的名称。

$x = Find-Module -Name Posh-SSH
$x.AdditionalMetadata.Functions -split ' '
$x.AdditionalMetadata.Cmdlets -split ' '

编辑:您是否阅读了 *scp* 命令的帮助?我做到了。其中之一必然会满足您的需求。我继续在我的计算机上安装了模块并运行以下命令以快速获取此模块中 *scp* 命令的概要。

Install-Module -Name Posh-SSH
Get-Command -Module Posh-SSH -Name *scp* |
ForEach-Object {"$($_.Name): $((Get-Help -Name $_).Synopsis)"}

Get-SCPFile: Download a File from a SSH Server using SCP
Get-SCPFolder: Download a folder from a SSH Server using SCP.
Get-SCPItem: Download from a remote server via SCP a file or directory.
Set-SCPFile: Copies a file to a SSH server using SCP.
Set-SCPFolder: Copies a folder to a SSH server using SCP.
Set-SCPItem: Upload an item, either file or directory to a remote system via SCP.
于 2020-02-14T17:39:05.930 回答