3

我正在尝试制作一个简单的 PowerShell 函数来拥有 Linux 风格的 ssh 命令。如:

ssh username@url

我正在使用 plink 来执行此操作,这是我编写的函数:

function ssh {
    param($usernameAndServer)

    $myArray = $usernameAndServer.Split("@")

    $myArray[0] | C:\plink.exe -ssh $myArray[1]
}

如果用户输入正确,$myArray[0] 是用户名,$myArray[1] 是 URL。因此,它连接到 URL,当系统提示您输入用户名时,用户名会使用管道流式传输。一切正常,除了管道不断输入用户名 ($myArray[0]) 并且一遍又一遍地作为密码输入。例子:

PS C:\Users\Mike> ssh xxxxx@yyyyy
login as: xxxxx@yyyyy's password:
Access denied
xxxxx@yyyyy's password:
Access denied
xxxxx@yyyyy's password:
Access denied
xxxxx@yyyyy's password:
Access denied
xxxxx@yyyy's password:
Access denied
xxxxx@yyyyy's password:
FATAL ERROR: Server sent disconnect message
type 2 (protocol error):
"Too many authentication failures for xxxxx"

其中用户名已替换为 xxxxx,URL 已替换为 yyyyy。

基本上,我需要找出在用户名($myArray[0])输入一次后如何阻止脚本在用户名($myArray[0])中进行管道传输。

有任何想法吗?我在整个互联网上寻找解决方案,但没有找到任何东西。

4

1 回答 1

2

plink 不允许您在一个参数中同时指定用户和主机吗?那是:

plink -ssh 用户@主机

如果是这样,您的 ssh 功能可以缩减为:

function ssh {
    param($usernameAndServer)

    C:\plink.exe -ssh $usernameAndServer
}
于 2011-01-12T04:22:24.417 回答