更改 SSH 使用的 Shell

本文介绍了如何在Windows系统中,通过OpenSSH配置默认Shell为PowerShell、PowerShell Core或GitBash/WSL,并详细说明了使用SSH连接时指定不同Shell的方法。同时,展示了在Linux环境下如何配置Host以使用zsh或其他自定义Shell。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考Choosing the shell that SSH uses? - Server Faulthttps://serverfault.com/questions/106722/choosing-the-shell-that-ssh-uses

以 Windows 为例,其默认的 Shell 是 CMD,如果要使用 Windows 系统自带的 PowerShell 5 的话,则

ssh -t user@host "powershell"

如果要使用新版的 PowerShell Core 的话,则

ssh -t user@host "pwsh"

如果要使用 Git Bash 或 WSL 的话,根据你的 Windows 系统设置 bash 为哪个,使用

ssh -t user@host "bash"

 即可连接 Git Bash 或 WSL。

如果要在 Windows 中更改 SSH 连接的默认 Shell 的话,参考OpenSSH Server Configuration for Windows | Microsoft Docsicon-default.png?t=L9C2https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

即可设置任意 Shell 为 OpenSSH for Windows 使用的默认 Shell。

如果使用的是 Linux 的话,则使用

ssh -t user@host 'zsh -l'

-t 表示的是强制使用伪TTY分配,-l 表示的是触发登录 Shell。此外,你还可以在你的 ~/.ssh/config 中修改 Host:

Host yourServer
    HostName <IP, FQDN or DNS resolvable name>
    IdentityFile ~/.ssh/<your keyfile>
    RemoteCommand zsh -l
    RequestTTY force
    User <yourUsername>
Host someHost
    HostName someIP
    IdentityFile ~/.ssh/somekey.pem
    RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
    PermitLocalCommand yes
    LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
    RequestTTY force
    User someUser

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayka

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值