ssh接続作業のタイパを良くする

記事タイトルとURLをコピーする

(小ネタです)

こんにちは、2022年10月にサーバーワークスに入社した大城と申します。現在AS部IE課でAWS修行中です。本記事でssh接続作業の短縮について記載します。AWSの技術的な話は出てきません。Linuxのsshの記事になります。

はじめに

ここ最近タイパ(タイムパフォーマンス)が話題となっています。TikTokなどショート動画が流行っており写真のように動画コンテンツが次々に再生されます。先日小学1年生の娘もYoutubeを2倍速で視聴していて驚きました。私自身もAWS認定の学習動画を倍速で視聴しており、浮いた時間で家事をしています。そんな世の中なのでEC2のssh接続作業のタイパを良くしたいと思いました。

クライアント環境

Macのターミナルを利用します。WindowsでもWSLでLinuxを入れることで同じことができると思います。

AWS環境

シンプルな構成を題材にします。EC2のOSは Amazon Linux 2 にしました。

  • パブリックサブネットに ohshiro-public-ec2(踏み台)を配置
  • プライベートサブネットに ohshiro-private-ec2 を配置
  • EC2は同じキーペアを利用する

diagram

この構成でクライアントPCからEC2にsshするケースで考えていきます。

これまでのやり方

  • ohshiro-public-ec2 へのssh
    • ohshiro-public-ec2 のグローバルIPを確認する
    • ssh -i 秘密鍵 ec2-user@グローバルIP とターミナルで入力する
    • ohshiro-public-ec2 にssh接続できた!
  • ohshiro-private-ec2 へのssh
    • ohshiro-public-ec2 のローカルに秘密鍵を配置する
    • ssh -i 秘密鍵 ec2-user@ohshiro-private-ec2のローカルIP とohshiro-public-ec2で入力する
    • ohshiro-private-ec2 にssh接続できた!

合計約30秒かかりました。これをできるだけ短縮していきます。

~/.ssh/configの活用

クライアントPC上のssh設定ファイルに接続情報を追加します。

Host ohshiro*
  IdentityFile ~/.ssh/keys/ohshiro.pem
  User ec2-user
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null
  ServerAliveInterval 60

Host ohshiro-public-ec2
  HostName ohshiro-public-ec2のグローバルIP

Host ohshiro-private-ec2
  HostName ohshiro-private-ec2のローカルIP
  ProxyCommand ssh -W %h:%p ohshiro-public-ec2

少し設定値について説明します。この設定の良いところは ohshiro-public-ec2 に秘密鍵を配置しなくても良い点です。ProxyCommand を利用することで良しなにクライアントPC上の秘密鍵を利用してくれます。

Host ohshiro* 部分

設定値 説明
Host ohshiro* ohshiroから始まるホストは下記の設定が継承される
IdentityFile ~/.ssh/keys/ohshiro.pem クライアントPC上のssh秘密鍵のパス
User ec2-user EC2にログインするためのLinuxのユーザー
StrictHostKeyChecking no ssh初回ログインした時に yes/no プロンプトが出ないようになる
UserKnownHostsFile=/dev/null 接続先のホストの情報を記録しないようする
ServerAliveInterval 60 sshが切れないように60で設定。沖縄から業務しているからか私はよくsshが切れるのでこの設定は必須

Host ohshiro-public-ec2、Host ohshiro-private-ec2 部分

ohshiro* に合致するホスト名のため設定が継承される

設定値 説明
HostName IPアドレス 接続先のIPアドレス
ProxyCommand ssh -W %h:%p ohshiro-public-ec2 ohshiro-public-ec2 を経由して ohshiro-private-ec2 にsshする

この ~/.ssh/config を定義しておくとクライアントPCから下記のコマンドでssh接続できます

  • ohshiro-public-ec2 へのssh
    • ssh ohshiro-public-ec2
  • ohshiro-private-ec2 へのssh
    • ssh ohshiro-private-ec2

5秒でsshできるようになりました。タイパが良くなってきましたがもう一工夫してみます。

alias の活用

Linux好きがよく使うaliasを設定して更に入力時間を短縮します。~/.bash_profile に下記を追加します。

alias pub='ssh ohshiro-public-ec2'
alias pri='ssh ohshiro-private-ec2'

~/.bash_profile を再読み込みした後、クライアントPCから下記のコマンドでssh接続できます

  • ohshiro-public-ec2 へのssh
    • pub
  • ohshiro-private-ec2 へのssh
    • pri

2秒でsshできるようになりました。

さいごに

ここまで読んで頂きありがとうございます。 sshを1日20回する人を例にあげると30秒が2秒になることで 1ヶ月で約3時間節約できます。1年で考えると36時間も節約できます。4日間は有給休暇を取れる計算になりますのでsshのタイパを良くして旅行に行きましょう。

大城 慶明 (記事一覧)

マネージドサービス部

2022年10月サーバーワークスに入社、沖縄からリモート勤務。AWSを勉強中。沖縄では大城が多いので「よっさん」と呼ばれています。AWS14冠。NRUG沖縄支部運営。X @yo_ohshiro