【scp コマンド】-iオプションを省略するssh config 活用方法
はじめに
毎回 scp -i ~/.ssh/hoge.pem を打つのが面倒だと感じたことはありませんか?
この記事では、~/.ssh/config ファイルを活用して、scp コマンドの入力を劇的にシンプルにする方法を紹介します。
対象者
-
scpコマンドを初めて使うエンジニア -
SSHやscpコマンドを普段利用している方 - 秘密鍵指定やIPアドレスを毎回入力している方
前提知識:ssh config の基本構造
ssh config は、複数のSSH接続先を効率よく管理するための設定ファイルです。
通常 ~/.ssh/config に作成し、次のような形式でホストごとの設定を記述します。
// .ssh/config
Host my-server
HostName 192.168.1.10
User ec2-user
Port 22
IdentityFile ~/.ssh/mykey.pem
この設定により、以下のようにシンプルにSSH接続できるようになります。
$ ssh my-server
複数のサーバーや鍵を扱う場合、設定を分けて記述することで安全かつ効率的に管理できます。
今回の記事ではこの設定をさらに応用して、scpコマンドの省略・簡略化に活かす方法を紹介していきます。
なぜ -i オプションが要らなくなるのか?
~/.ssh/config に接続設定を書いておくことで、scpコマンドが自動的に適切な鍵・ユーザー・ホストを参照するようになります。
つまり、以下のような情報を毎回入力する必要がなくなるのです。
- 接続先のIPアドレス
- ユーザー名
- 秘密鍵ファイルのパス
configファイルの記述例
// .ssh/config
Host dev-server
HostName 0.0.0.0
User ec2-user
IdentityFile ~/.ssh/mykey.pem
IdentitiesOnly yes
この設定により、dev-server というエイリアスでscp やssh が使えるようになります。
比較(導入前後)
導入後の方が、明らかにコマンドがスッキリします。
Before(毎回オプション指定が必要)
$ scp -i ~/.ssh/mykey.pem ./file.txt ec2-user@0.0.0.0:/tmp/
After(configファイルを活用)
$ scp ./file.txt dev-server:/tmp/
複数環境を管理する場合
以下のようにすることで、scp や ssh も以下のように切り替えて使えます
// .ssh/config
Host dev-server
HostName dev.example.com
User ubuntu
IdentityFile ~/.ssh/dev_key.pem
Host prod-server
HostName prod.example.com
User ubuntu
IdentityFile ~/.ssh/prod_key.pem
$ scp ./file.txt prod-server:/tmp/
注意事項
-
IdentitiesOnly yesを忘れると、他のSSH設定と衝突してIdentityFileが無視されることがあります。 -
~/.ssh/configのパーミッションはchmod 600 ~/.ssh/configを推奨 -
IdentityFileで指定した秘密鍵はchmod 400または600にしておく必要があります
おわりに
SSH config の活用で scp のコマンドがとてもスッキリします。
日々私用する開発ツールのストレスを減らすことは大きな生産性向上につながるのでぜひ活用してみてください。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion