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


11

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

ssh user@remoteserverip -t zsh

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

ssh serveralias -t zsh

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

有没有无需编写函数就能实现的方法?


Answers:


6

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

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

alias -g 'serveralias=serveralias -t zsh'

给你~/.zshrc

或制作类似以下的功能:

zssh() ssh "$@" -t zsh

是不是alias真的正确吗?检查您的报价。
CVn 2013年

我想我会采用这种解决方案,谢谢!
brngp 2013年

5

我同意@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并在远程计算机上运行命令?


command="exec zsh"这是一个坏主意:它使使用显式命令(因此再见scp,rsync等)运行ssh成为不可能。unix.stackexchange.com/a/20739展示了如何做到这一点。
吉尔斯(Gillles)“所以-别再邪恶了”

我不知道可以使用authorized_keys执行命令。这是一个很好的主意,但是我将使用stephane的解决方案,因为Gilles指出了这个问题。谢谢
brngp

@Gilles-是的,我找到了您的解决方案,并在这里展示了潜力,不想在这里复制您的解决方案,这就是为什么我在我的答案的底部引用了您的解决方案。
slm

4

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

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

截至2019年的最佳答案。此答案需要更多投票!
geekQ


0

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

  1. 正常连接到服务器。 ssh serveralias
  2. 执行chsh更改系统外壳
  3. 输入/bin/zsh以将其设置为zsh
  4. 重新连接,ssh serveralias它将显示%

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.