🔐

【scp コマンド】-iオプションを省略するssh config 活用方法

に公開

はじめに

毎回 scp -i ~/.ssh/hoge.pem を打つのが面倒だと感じたことはありませんか?
この記事では、~/.ssh/config ファイルを活用して、scp コマンドの入力を劇的にシンプルにする方法を紹介します。

対象者

  • scp コマンドを初めて使うエンジニア
  • SSHscp コマンドを普段利用している方
  • 秘密鍵指定や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 というエイリアスでscpssh が使えるようになります。

比較(導入前後)

導入後の方が、明らかにコマンドがスッキリします。

Before(毎回オプション指定が必要)

$ scp -i ~/.ssh/mykey.pem ./file.txt ec2-user@0.0.0.0:/tmp/

After(configファイルを活用)

$ scp ./file.txt dev-server:/tmp/

複数環境を管理する場合

以下のようにすることで、scpssh も以下のように切り替えて使えます

// .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スキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp/

GitHubで編集を提案

Discussion