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

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

我想启动远程会话而不输入以下命令

ssh user@remoteserverip -t zsh

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

ssh serveralias -t zsh

但我想删除该-t zsh参数。

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

答案1

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

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh

答案2

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

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

alias -g 'serveralias=serveralias -t zsh'

到你的~/.zshrc

或者创建一个类似的函数:

zssh() ssh "$@" -t zsh

答案3

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

command="exec zsh" ssh-dss ..... rest of key ....

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

例子

在服务器上,ssh 到远程。

$ ssh saml@greeneggs

在远程服务器上,确认我们处于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

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

答案4

您最好更改系统外壳设置。

  1. 正常连接服务器。ssh serveralias
  2. 执行chsh更改系统shell
  3. 输入/bin/zsh设置为zsh
  4. 重新连接ssh serveralias就会显示%

chsh [username]可用于更改其他用户的设置而无需重新连接。

相关内容