Python AWS多实例从命令行通过ssh连接(不记住keypairname和user)

Python AWS多实例从命令行通过ssh连接(不记住keypairname和user),python,bash,shell,python-3.x,amazon-web-services,Python,Bash,Shell,Python 3.x,Amazon Web Services,我有四个AWS帐户,有50多个实例。每天我都要联系他们中的大多数人。因此,每当我想通过ssh连接实例时,必须首先登录AWS帐户,然后查找密钥对名称和IP。因为很难记住所有的IP和密钥对。因此,我希望工具或脚本能够在不记住密钥对名称和用户的情况下轻松完成 注意:我已经下载了密钥对 通过ssh从命令行连接:ssh-i kepairnameuser@IP您可以使用~/.ssg/config选项。 诸如此类: Host server1 Hostname 1.2.3.4 User user1 Identi

我有四个AWS帐户,有50多个实例。每天我都要联系他们中的大多数人。因此,每当我想通过ssh连接实例时,必须首先登录AWS帐户,然后查找密钥对名称和IP。因为很难记住所有的IP和密钥对。因此,我希望工具或脚本能够在不记住密钥对名称和用户的情况下轻松完成

注意:我已经下载了密钥对
通过ssh从命令行连接:ssh-i kepairnameuser@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
$ 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
之后,您将能够连接到您的主机只需

ssh server1
ssh server2
如果您使用任何其他选项,则可以将其中任何选项添加到该配置中。像往常一样,在
manssh\u 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
它是这样工作的:

Host server1
Hostname 1.2.3.4
User user1
IdentityFile kepairname1


Host server2
Hostname 1.2.3.5
User user2
IdentityFile kepairname2
$ 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

假设我想创建sheel脚本,输出如下所示:-----------SSH登录--------1。AWS 2。数码海洋3。其他------如果他们按1,则转到AWS帐户…1.1 account1.2 account2>>>当他们按account1>>>时,则找到1.1.1 instance1 1.1.2 instance2>>>以便查找主机名并轻松登录…@IftikharHossain添加了用于交互式选择的脚本。