如何创建可通过SSH在远程服务器使用的命令别名?
如何创建可通过SSH在远程服务器使用的命令别名?
我之前也纠结过这个问题——总不能每次登录新服务器都手动敲一遍别名设置吧,下面几个亲测有效的方法,你可以按需选:
方法一:修改本地SSH配置,一劳永逸自动加载
这是我现在用得最多的方式,改一次配置,所有远程登录都自动生效。
打开本地的~/.ssh/config文件(如果没有就直接新建一个),加上这段配置:
Host * RequestTTY yes RemoteCommand alias ll='ls -l'; exec $SHELL -i
Host *表示这个规则对所有远程服务器生效RequestTTY yes是确保远程能启动交互式shell,不然设置完别名就直接退出了RemoteCommand会在登录后先执行别名设置,然后用exec $SHELL -i替换当前进程为交互式shell,这样别名就会一直保留到你退出登录
要是偶尔需要跳过别名(比如登录到有特殊配置的服务器),可以用临时参数覆盖:ssh -o RemoteCommand= user@server
方法二:写个SSH包装脚本,灵活自定义别名
如果不想改全局SSH配置,或者要加一堆自定义别名,写个小脚本更灵活。
在本地创建一个叫ssha的脚本(名字随便取,好记就行),内容如下:
#!/bin/bash # 这里可以加任意多的别名,比如同时加la的配置 CUSTOM_ALIASES="alias ll='ls -l'; alias la='ls -la'" # 连接服务器时先执行别名,再启动交互式shell ssh "$@" -- "$CUSTOM_ALIASES; exec \$SHELL -i"
然后给脚本加执行权限:
chmod +x ~/bin/ssha
最后把~/bin加到你的环境变量PATH里(如果还没加,在~/.bashrc或~/.zshrc里加export PATH="$HOME/bin:$PATH",然后执行source ~/.bashrc生效)。
之后登录远程就用ssha user@server代替ssh user@server,脚本里的所有别名都会自动生效,后续要改别名直接编辑脚本就行。
方法三:终端快捷键手动触发,临时救急超方便
要是你习惯用原生ssh命令,或者只是偶尔需要设置别名,用终端的快捷键功能最直接。
举两个常用终端的设置例子:
- iTerm2(Mac):打开
偏好设置→配置文件→选中你的远程会话配置→按键,点+加个快捷键(比如Cmd+Shift+L),动作选发送文本,内容填alias ll='ls -l',记得勾选发送换行 - Konsole(Linux):打开
设置→配置快捷键,点+新建快捷键,触发后执行向活动会话发送文本,内容填alias ll='ls -l'\n
每次登录远程后按一下快捷键,别名就设置好了,完全不用改任何配置文件。
小提醒
- 这些方法都依赖远程shell支持
alias命令,但你已经确认ls -l能运行,那只要是POSIX兼容的shell(bash、sh、zsh等)都没问题,老一点的csh/tcsh语法是alias ll 'ls -l'(把等号换成空格),不过这类shell现在很少见了 - 要是遇到完全禁止自定义命令的受限服务器,那这些方法可能失效,但这种场景也极少
备注:内容来源于stack exchange,提问作者K1ll3rM
相关产品推荐
相关产品推荐

