windowsでSSHコマンドを超絶簡単に実行できるようにする方法
はじめに
windows環境から管理しているサーバーに接続するためにSSH接続しているよっていう人は多いと思います。
そして普通に接続しようとすると以下ようなコマンドを叩く必要があるでしょう。
# 鍵認証でSSH接続する例
ssh -i /path/to/private_key.pem username@192.168.0.2
とはいえ業務で使うよう場合は接続先はたくさんある場合が多く、いちいちこのようにコマンドを打つのは大変でしょう。
今回はwindows環境でこのようなSSH接続を簡単にする方法を解説します。
本題
結論から言うと.ssh/configを編集して.bashrcに.ssh/configを読み込んでhostの定義名を使って入力補完をできるようにする設定を仕込むことで、gitbashのSSHコマンドで超絶簡単に接続できるようにします。
以下、順を追って解説します。
1. gitbashをインストールする
gitbashは以下のサイトからダウンロードできます。
具体的なインストール手順は以下が参考になります。
2. ~/.ssh/configを作成して接続先を登録する
~/.ssh/configを作成して以下の例のように接続先を登録します。
# -----------------------------------------------------------------
# CentOS8 on AWS EC2
# -----------------------------------------------------------------
Host ec2_centos7
HostName 172.16.10.202
User ec2-user
IdentityFile ~/.ssh/ec2_centos8.pem
# -----------------------------------------------------------------
# Ubuntu20.04 on AWS EC2
# -----------------------------------------------------------------
Host ec2_ubuntu20.04
HostName 172.16.10.203
User ubuntu
IdentityFile ~/.ssh/ec2_ubuntu.pem
# -----------------------------------------------------------------
# AmazonLinux2 on AWS EC2
# -----------------------------------------------------------------
Host ec2_amazonlinux2
HostName 172.16.10.204
User ec2-user
IdentityFile ~/.ssh/ec2_amazonlinux2.pem
# -----------------------------------------------------------------
# gcp
# -----------------------------------------------------------------
Host gcp_centos7
HostName 172.16.10.205
User centos
IdentityFile ~/.ssh/gcp_centos7.pem
これは、GUIからファイル作成&編集してもいいですし、以下のようにgitbashでコマンドで行っても良いです。
touch ~/.ssh/config
vi ~/.ssh/config
3. ~/.bashrcを作成してsshコマンドで入力補完をできるようにする
これも2. ~/.ssh/configを作成して接続先を登録する の説明と同様にGUIやgitbashのコマンド等で作成&編集しても良いです。
_ssh_completion() {
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep -i '^host' ~/.ssh/config | awk '{print $2}')
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh_completion ssh
4. 編集した.bashrcを反映させる
gitbashを再起動または開きなおすか、以下コマンドで.bashrcを反映させます。
source ~/.bashrc # 編集後の.bashrcを反映させる
設定を反映させたらgitbashでssh
コマンドを打ってみましょう。
以下の画像のように~/.ssh/configに登録したhost名を入力補完できるようになっていることでしょう。
これで接続先のIPアドレスや対応する鍵ファイル、更にはそれらを定義したhost名のことを覚えていなくても超絶簡単にSSH接続できるようになりました。
やったね!
さいごに
私は普段から仕事やプライベートでもSSH接続する機会が多くあります。
全てを合わせると扱っている接続先は10個以上あります。
もちろん全てを~/.ssh/configに記述していますが、やはりそのとき接続したいサーバーのhost名を思い出せない事が多々あり、その度に~/.ssh/configを確認する必要があったのは中々辛いものでした。
しかしhost名を入力補完出来るようになったことで、このような問題が解決されました。
同じ悩みを持っている方はこの記事を参考にしていただければ幸いに思います。
Discussion