如何快速选择并登录我需要通过 ssh 访问的多个主机?我正在构建一个如下所示的 shell 脚本,用于dialog
从命令行显示主机菜单,但我很好奇是否有更好的方法。
#!/bin/dash
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
while [ 1 ]
do
dialog --menu "Select Host" 0 0 0 \
"hostname1" "Host description 1" \
"hostname2" "Host description 2" \
"hostname3" "Host description 3" 2> $tempfile
HOSTNAME=`cat $tempfile`
if [ "x" = "x$HOSTNAME" ]; then
break
fi
ssh $HOSTNAME
done
答案1
我喜欢在客户端计算机上的 ~/.ssh/config 文件中为每个主机设置一个短名称。以下是示例:
Host host1
HostName longhostname.mydomain.com
User remoteuser
IdentityFile ~/ssh-keys/id_rsa-my-keypair
这样,我只需输入“ssh host1”即可立即登录。
答案2
对于基于 GUI 的解决方案,请查看SSH菜单。
答案3
对于频繁登录,我通常依赖短主机名。我们公司的 DNS 包含其中的大部分,其余的在 /etc/hosts 中。结合 ssh 代理,这对我来说已经足够方便了。哦,是的,还有:肌肉记忆。当我想到一个主机名时,如果我的手指离键盘足够近,它就会神奇地出现在屏幕上。
对于不太常用的命令,我通常依赖于命令历史记录(如果它们不是那您可以将任务从记录在 Wiki 中(复制/粘贴)复制到其他位置(不频繁的任务)或记录在 Wiki 中。这种方法的优点是,不频繁的任务或多或少可以保证完全记录下来。
我曾想过尝试自动化命令完成,这样 ssh 就会自动扩展“tab”上的常用主机名,但直到今天我并没有太想念这个……总有一天我会的……
答案4
我有过目不忘的记忆力,所以只要记住他们的 IP 地址就行了,我知道这很悲哀,但我不得不说这还是有好处的 :)