![如何通过 SSH 连接到 Windows 上的 PowerShell 并保留一组可用的箭头键?](https://linux22.com/image/227271/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20Windows%20%E4%B8%8A%E7%9A%84%20PowerShell%20%E5%B9%B6%E4%BF%9D%E7%95%99%E4%B8%80%E7%BB%84%E5%8F%AF%E7%94%A8%E7%9A%84%E7%AE%AD%E5%A4%B4%E9%94%AE%EF%BC%9F.png)
我可以这样做直接进入PowerShell
ssh foobar 'powershell'
,但在此 shell 中,箭头键不起作用。
如果我只是:
ssh foobar
..然后输入 PowerShell powershell
。这里箭头键起作用。
答案1
是的,ssh foobar 'powershell'
这是在 SSH 连接后启动命令的主要方式...但有一个警告:默认情况下,当您指定这样的命令时,OpenSSH 客户端将会话初始化为非交互式会话。
这本质上意味着远程端没有 PTY 设备,只是从远程sshd
到远程 shell 和执行的命令的直管。也没有$TERM
变量,并且最好没有登录脚本的输出来搞乱事情,因此您将能够通过 SSH 在系统之间有效地传输内容。但这会让交互式工具不高兴:例如,正如您所注意到的,箭头键不起作用,因为远程端不知道本地端将为箭头键发送什么样的终端键码序列。
您可以通过在 SSH 命令行上指定远程命令时显式请求 TTY 分配来解决此问题:
ssh -t foobar 'powershell'
添加该-t
选项会导致 SSH 客户端请求远程sshd
完全设置远程端以供交互使用,即使您为远程端指定命令也是如此。
由于其中没有powershell
对本地 shell 有特殊含义的字符,因此您也可以省略单引号。
ssh -t foobar powershell