我有四个带有50多个实例的AWS账户。每天我必须连接其中的大多数。因此,每次当我想通过ssh连接实例时,都必须先登录AWS账户,然后才能找到密钥对名称和IP。因为很难记住所有IP和密钥对。因此,我希望工具或脚本能够轻松完成,而无需记住密钥对名称和用户。
注意:我已经从命令行通过ssh下载了密钥对连接:ssh -i kepairname user @ IP
您可以使用~/.ssg/config
选项。像这样的东西:
Host server1
Hostname 1.2.3.4
User user1
IdentityFile kepairname1
Host server2
Hostname 1.2.3.5
User user2
IdentityFile kepairname2
之后,您将可以通过以下方式连接到主机
ssh server1
ssh server2
如果使用任何其他选项,则可以将其中任何一个添加到该配置中。与往常一样,中的完整信息man ssh_config
。
如果要进行交互式选择,则可以使用简单的bash脚本。在该示例中,我创建了目录~/.ssh/config.d/
并创建了配置:
$ ls -1 ~/.ssh/config.d/
AWS
DigitalOcean
然后,可以使用该简单脚本以交互方式连接到您的服务器:
#!/bin/bash
# Defining constant
CONFIG_DIR="$HOME/.ssh/config.d/"
# Add providers to array
PROVIDERS=($(ls -1 "$CONFIG_DIR"))
# select uses PS3 as a prompt
PS3='Select provider: '
select prov in ${PROVIDERS[@]}; do
if [[ -n $prov ]]; then
provider=$prov
echo "You have selected $provider"
break
else
echo 'Wrong selection.'
fi
done
# Defining config file and parsing instances from it
CONF_FILE="${CONFIG_DIR}${provider}"
INSTANCES=($(awk '/Host / {print $2}' "$CONF_FILE"))
PS3='Select instance: '
select inst in ${INSTANCES[@]}; do
if [[ -n $inst ]]; then
instance=$inst
echo "You have selected $instance"
ssh -F "$CONF_FILE" $instance
break
else
echo 'Wrong selection.'
fi
done
它像这样工作:
$ bash test.sh
1) AWS
2) DigitalOcean
Select provider: 34
Wrong selection.
Select provider: 2
You have selected DigitalOcean
1) server1
2) server2
Select instance: 2
You have selected server2
ssh: connect to host 1.2.3.5 port 22: No route to host
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句