#sshコマンドが地味に長い
MacのターミナルからAWS EC2に接続する際にsshコマンドを打ちますが、
毎回このコマンドを全部打つのが面倒に感じることはないでしょうか?
ちなみに、sshコマンドは以下のような書き方になります。
(Amazon Linux2に接続する場合)
$ ssh -i < キーペアのパス > ec2-user@< EC2のipアドレス >
なので今回は、以下のようにコマンドを短縮していきたいと思います。
#####短縮版sshコマンド
$ sshec2 < EC2のipアドレス >
だいぶ短くなりましたね!
接続したいEC2のIPアドレスを調べて、「sshec2」の後にスペースを入れてコピペするだけで
接続できるようになります。
※この「sshec2」は任意のコマンド名になりますので、ご自身で自由に設定できます
※使用するキーペアは固定化されます
#コマンド短縮の設定方法
ホームディレクトリにある、「.bashrcファイル」を編集して、関数を追加します。
エイリアスじゃダメなの?と思う方もいるかもしれませんが、実は関数でないと不具合が発生してしまいます。
理由は後ほどご説明します。
$ vi ~/.bashrc
.bashrcをvimエディタで開いたら、以下のコードを記述します。
function sshec2() {
command ssh -i < キーペアのパス > ec2-user@$1
}
※関数名は「sshec2」でなくても、任意で設定できます
コードを追加したら、ファイルを保存して閉じ、
以下のコマンドで設定を反映させます。
$ source ~/.bashrc
これで設定は完了です!
sshec2のコマンドでssh接続ができるようになります。
###おまけ)エイリアスで設定できない理由
もし以下のようにエイリアスを作成してみるとどうなるでしょうか?
alias sshec2='ssh -i < キーペアのパス > ec2-user@$1'
エイリアスでコマンドを打ってみます。
$ sshec2 < キーペアのパス >
するとエラーが発生してしまします。
原因として、エイリアスの場合
以下のように@と引数の間にスペースが入ってしまうからなのでした。
//引数($1)
$ ssh -i < キーペアのパス > ec2-user@ < EC2のipアドレス >
↑
【参考サイト】 [bashで引数つきのエイリアスを設定する](https://hacknote.jp/archives/8043/)