非常新手的问题!
我将连接到两个不同的服务器,这两个服务器都是同一Amazon AWS集群的一部分。他们不是由我经营的。
在一个ssh会话中,终端让我自动完成。在另一届会议上,它没有-我希望这样做。
为什么会这样-服务器管理员是否设置了此选项?
而且我能做些什么吗?
谢谢!
非常新手的问题!
我将连接到两个不同的服务器,这两个服务器都是同一Amazon AWS集群的一部分。他们不是由我经营的。
在一个ssh会话中,终端让我自动完成。在另一届会议上,它没有-我希望这样做。
为什么会这样-服务器管理员是否设置了此选项?
而且我能做些什么吗?
谢谢!
Answers:
它是ssh会话中使用的shell及其配置的组合。
虽然您的外壳可能支持自动补全功能,但可能没有为此配置它。如果您使用的是bash shell,则可以为以下内容编辑本地.bashrc文件以提供自动完成功能。
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
从我自己在unix.SE上的答案复制:
似乎特别是在Ubuntu中,其中的条目~/.ssh/known_hosts
是散列的,因此SSH完成无法读取它们。这是一个功能,而不是错误。即使添加HashKnownHosts no
到~/.ssh/config
,/etc/ssh/ssh_config
我也无法阻止主机哈希。
但是,在中也找到了我感兴趣的主机~/.ssh/config
。这是Bash完成的脚本,该脚本从该文件读取条目:
_ssh()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep '^Host' ~/.ssh/config | awk '{print $2}')
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh ssh
放入该脚本,/etc/bash_completion.d/ssh
然后使用以下命令将其来源:
$ . /etc/bash_completion.d/ssh
我发现该指南非常宝贵,没有它,我将无法编写该脚本。感谢Steve Kemp编写了出色的指南!
You may not change the shell for 'counterstrike'.