さまざまなAWSアカウントを使用してSSHのプロキシ設定を保存する

さまざまなAWSアカウントを使用してSSHのプロキシ設定を保存する

複数のAmazonアカウントにわたってEC2インスタンス(仮想マシン)を管理します。これらのコンピュータには必ずしもドメイン名がある必要はありません。通常はIPアドレスを介して接続します。

各AWSアカウントには、接続に使用される独自のBaschenサーバーがあります。コンピュータに接続するときにコマンドラインでSSHトンネルの設定を指定する必要があるため、これは面倒です。マシンにドメイン名がある場合は、ファイル~/.ssh/configにトンネルを設定するだけです。代わりにこれを行う必要があります。プロキシIPアドレスは、使用しているAWSアカウントに応じて変更されます。

ssh -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]

プロキシコマンド(およびユーザー名)を指定する必要がないようにSSHを設定する良い方法はありますか?さらに意味がある場合は、bashエイリアスなどの他のソリューションを使用したいと思います。

答え1

これがあなたに必要なものです~/.ssh/config。問題が何であるかはわかりませんが、次のようになります。

Host proxy1
  Hostname 1.2.3.4
  User ubuntu

Host target1
  Hostname 172.17.1.2
  ProxyCommand ssh -W %h:%p proxy1
  User ubuntu

その後、を使用して接続しますssh target1。もちろん、単一のプロキシを使用してより多くの宛先を一致させたり、別のエイリアスを定義したり、ワイルドカード(Host 172.17.1.*)を使用してIPブロック全体を一致させることもできます。

答え2

前述の.bashrcオプションと同じです。何か違う場合:


必要な名前を含めるようにホストファイルを変更してください。

sudo vi /etc/hosts

SSHスクリプトを含むいくつかのテキストファイルを作成します。
テキストファイルを作成しました。:

sudo echo "ssh -o ProxyCommand=\"ssh -W %h:%p [email protected]\" " > your-ssh-file

実行可能にする
sudo chmod +x your-ssh-file

次のコマンドを使用して作成したフォルダのファイルを実行します。
./your-ssh-file

答え3

私のファイルに次のエイリアスを追加しました.bashrc

alias ssh-foo='ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu <FOO_BASTION_IP>" -l ubuntu'
alias ssh-bar='ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu <BAR_BASTION_IP>" -l ubuntu'

今接続コマンドは非常に簡単です。

ssh-foo <FOO_INSTANCE_IP>

エイリアスはscp似ていますが、ユーザー名を別の方法で提供する必要があります。

alias scp-bar='scp -o ProxyCommand="ssh -W %h:%p -l ubuntu <BAR_BASTION_IP>" -o User=ubuntu'

関連情報