🌟

windowsでSSHコマンドを超絶簡単に実行できるようにする方法

2024/12/06に公開

はじめに

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は以下のサイトからダウンロードできます。
https://gitforwindows.org/

具体的なインストール手順は以下が参考になります。
https://www.sejuku.net/blog/72673

2. ~/.ssh/configを作成して接続先を登録する

~/.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でコマンドで行っても良いです。

gitbash
touch ~/.ssh/config
vi ~/.ssh/config

3. ~/.bashrcを作成してsshコマンドで入力補完をできるようにする

これも2. ~/.ssh/configを作成して接続先を登録する の説明と同様にGUIやgitbashのコマンド等で作成&編集しても良いです。

.bashrc
_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を反映させます。

gitbash
source ~/.bashrc # 編集後の.bashrcを反映させる

設定を反映させたらgitbashでsshコマンドを打ってみましょう。
以下の画像のように~/.ssh/configに登録したhost名を入力補完できるようになっていることでしょう。

これで接続先のIPアドレスや対応する鍵ファイル、更にはそれらを定義したhost名のことを覚えていなくても超絶簡単にSSH接続できるようになりました。

やったね!

さいごに

私は普段から仕事やプライベートでもSSH接続する機会が多くあります。
全てを合わせると扱っている接続先は10個以上あります。
もちろん全てを~/.ssh/configに記述していますが、やはりそのとき接続したいサーバーのhost名を思い出せない事が多々あり、その度に~/.ssh/configを確認する必要があったのは中々辛いものでした。

しかしhost名を入力補完出来るようになったことで、このような問題が解決されました。
同じ悩みを持っている方はこの記事を参考にしていただければ幸いに思います。

Discussion