我想启动远程会话而不输入以下命令
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
您最好更改系统外壳设置。
- 正常连接服务器。
ssh serveralias
- 执行
chsh
更改系统shell - 输入
/bin/zsh
设置为zsh - 重新连接
ssh serveralias
就会显示%
chsh [username]
可用于更改其他用户的设置而无需重新连接。