複数の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'