.ssh/config 在 zsh 中启动远程会话

brn*_*ngp 13 ssh remote zsh session

我想在不键入以下命令的情况下启动远程会话

ssh user@remoteserverip -t zsh
Run Code Online (Sandbox Code Playgroud)

我知道我可以更改主机名~/.ssh/config以简单地使用以下内容:

ssh serveralias -t zsh
Run Code Online (Sandbox Code Playgroud)

但我想删除-t zsh参数。

有没有办法在不编写函数的情况下实现这一目标?

小智 12

对于多年后到达这里的任何人,自 2017 年以来,可以将所有内容都放在配置文件中:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh
Run Code Online (Sandbox Code Playgroud)

  • 截至 2019 年的最佳答案。这个答案需要更多的赞成! (2认同)

Sté*_*las 7

我认为这是不可能的~/.ssh/config。该-t可以通过添加覆盖RequestTTY yes,但它似乎没有可以指定远程命令~/.ssh/config

但是,使用zsh,您可以添加:

alias -g 'serveralias=serveralias -t zsh'
Run Code Online (Sandbox Code Playgroud)

到您的~/.zshrc.

或者做一个像这样的函数:

zssh() ssh "$@" -t zsh
Run Code Online (Sandbox Code Playgroud)


slm*_*slm 5

我同意@Stephane 的观点,没有办法使用~/.ssh/config file. 另一种方法是使用~/.ssh/authorized_keys远程服务器上的文件。如果添加这样的一行:

command="exec zsh" ssh-dss ..... rest of key ....
Run Code Online (Sandbox Code Playgroud)

然后你可以像往常一样 ssh,你会在远程服务器上得到一个 zsh。

例子

在服务器上,ssh 到远程。

$ ssh saml@greeneggs
Run Code Online (Sandbox Code Playgroud)

在远程服务器上,确认我们在zsh.

[saml@greeneggs]~% ps -eaf|grep $$
saml      1974  1973  1 10:34 pts/3    00:00:00 zsh
saml      2023  1974  0 10:34 pts/3    00:00:00 ps -eaf
saml      2024  1974  0 10:34 pts/3    00:00:00 grep --color=auto 1974
Run Code Online (Sandbox Code Playgroud)

您可以使用此文件做更复杂的事情,请参阅此问答,标题为:ssh,启动特定的 shell,并在远程计算机上运行命令?.