(小ネタです)
こんにちは、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は同じキーペアを利用する
この構成でクライアント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