如何通过ssh执行命令,远程是windows

Tig*_*ger 4 shell bash ssh windows shell-script

我的远程机器是 Windows,我正在ssh从 ubuntu 到 Windows。

我想使用 git bash 而不是命令提示符,但是运行ssh将带我到默认命令提示符,有什么方法可以通过 git bash 调用ssh吗?

我尝试以下命令不起作用:

ssh Administrator@54.xxx.xxx.207 < "C:\Program Files\Git\bin\sh.exe"
Run Code Online (Sandbox Code Playgroud)

我可以在 ssh 之后运行以下命令来启动 git bash,但我正在寻找一种方法来自动化这个过程?

"C:\Program Files\Git\bin\sh.exe" --login
Run Code Online (Sandbox Code Playgroud)

我使用的是 Windows 2012 R2

Fre*_*ddy 6

是的,如果您安装了OpenSSH For Windows Server 2019 和 Windows 10,则可以。

Windows 10 1809 和 Server 2019 的 OpenSSH 服务器配置

通过Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH在字符串值中添加 shell 可执行文件的完整路径,在 Windows 注册表中配置默认​​ ssh shell DefaultShell

例如,以下 Powershell 命令将默认 shell 设置为 PowerShell.exe:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Run Code Online (Sandbox Code Playgroud)

要将 Git Bash 设置为默认 shell,请在 PowerShell 中以管理员身份运行此代码段:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\bin\sh.exe" -PropertyType String -Force
Run Code Online (Sandbox Code Playgroud)

为了得到一个登录shell,你可以创建一个批处理文件,sh.batC:\Program Files\Git\bin这个内容:

@echo off
"C:\Program Files\Git\bin\sh.exe" --login
Run Code Online (Sandbox Code Playgroud)

并将DefaultShell值替换为C:\Program Files\Git\bin\sh.bat.

DefaultShell注册表项是一个新项,您可以将其删除以恢复默认的命令提示符。