使用Plink执行命令不起作用,但在PuTTY中也是如此

时间:2017-10-05 17:33:58

标签: powershell ssh raspberry-pi plink lshell

我正在尝试创建一个PowerShell脚本,以SSH连接到Raspberry Pi并执行一些命令。我正在使用Plink将SSH连接到Pi over命令行。但是我必须通过SSH连接到在lshell中运行的Pi用户。我可以通过零问题将PuTTY放到Pi中,但是当使用Plink时,我得到一个错误,说我正在使用的命令是禁止的。我正在尝试使用su,这在使用PuTTY时不起作用。

我得到的错误如下:

plink : *** forbidden char/command over SSH: "su"
At line:1 char:1
+ plink -ssh pi@<IP> -pw <password> su
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (*** forbidden c... over SSH:         
"su":String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

This incident has been reported.

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

使用plink ... command与使用PuTTY登录并键入command相比,存在两个不同之处:

  1. plink ... command打开&#34; exec&#34;通道运行命令。当PuTTY打开&#34; shell&#34;使用登录shell的通道,只有shell运行命令。

  2. 默认情况下,
  3. plink ... command会打开一个非交互式会话(无TTY)。 PuTTY打开一个交互式会话(使用TTY)。

  4. 测试PuTTY中的Plink行为:

    1. 输入 Connection&gt;的命令SSH&gt;远程命令
    2. 检查连接&gt; SSH&gt; TTY&gt;不要分配伪终端
    3. 相反,要在Plink中测试PuTTY行为,请使用:

      echo command | plink ...
      

      另请查看Plink -T/-t switches

      这表现为2中的PuTTY,但不是1:

      plink -t ... command
      

      相反,它在1中表现为PuTTY,但不在2中表示

      echo command | plink -T ...
      

      试验这些内容,找出造成您特定问题的原因。