はじめに
LinuxサーバやAWS EC2へ接続する際によく利用されるのがSSHです。
SSHを利用する際には、接続を行うための ssh コマンドと、公開鍵・秘密鍵を生成するための ssh-keygen コマンドを利用します。
SSH接続の概要と、実際によく利用する ssh および ssh-keygen コマンドについて簡単にまとめます。
SSH接続について
SSH(Secure Shell)は、サーバへ安全に接続するためのプロトコルです。
例えばAWSのEC2へ接続する場合、以下のような構成になります。
ローカルPC
↓
SSH
↓
EC2
SSHではパスワード認証も利用できますが、AWSでは一般的に公開鍵認証を利用します。
公開鍵認証では、
ローカルPC
└ 秘密鍵
EC2
└ 公開鍵
を利用して認証を行います。
AWSでEC2作成時にダウンロードする .pem ファイルは秘密鍵であり、対応する公開鍵はEC2側へ登録されています。
よく利用するsshコマンド
SSHコマンドはユーザー名と接続先を指定します。
ssh ec2-user@192.168.1.10
オプション一覧
| オプション | 説明 |
|---|---|
| -i | 使用する秘密鍵を指定 |
| -v | 詳細ログ表示 |
| -vv | より詳細なログ表示 |
| -vvv | 最も詳細なログ表示 |
| -p | 接続先ポート番号を指定 |
| -J | 踏み台サーバ(ProxyJump)を指定 |
ssh -i sample.pem ec2-user@192.168.1.10
ssh -vvv -i sample.pem ec2-user@192.168.1.10
ssh -p 2222 ec2-user@192.168.1.10
ssh -J ec2-user@ec2-a ec2-user@ec2-b
ssh-keygenについて
ssh-keygen は公開鍵認証で利用する公開鍵と秘密鍵を生成するコマンドです。
生成されるファイルは以下の2つです。
sample.pem
↓
秘密鍵
sample.pem.pub
↓
公開鍵
秘密鍵は利用者のみが保持し、公開鍵は接続先サーバの authorized_keys へ登録します。
よく利用するssh-keygenコマンド
鍵ペア生成
ssh-keygen -t rsa -b 4096 -m PEM -f sample.pem
| オプション | 説明 |
|---|---|
| -t | 鍵アルゴリズム指定 |
| -b | 鍵長指定 |
| -m PEM | PEM形式で生成 |
| -f | 出力ファイル名指定 |
秘密鍵から公開鍵を取得
EC2へ登録済みの公開鍵と一致するか確認したい場合に便利です。
ssh-keygen -y -f sample.pem
出力例
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
フィンガープリント確認
鍵の同一性確認などで利用します。
ssh-keygen -lf sample.pem.pub
| オプション | 説明 |
|---|---|
| -l | フィンガープリント表示 |
| -f | 対象ファイル指定 |
コメント変更
公開鍵の末尾に付与されるコメントを変更できます。
コメントは認証には利用されず、鍵の識別用途として利用されます。
ssh-keygen -c -f sample.pem
例
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... ec2-bastion
おわりに
実際にSSH接続する際はネットワークやセキュリティなど他にも考えることがたくさんありますが、よく使うコマンドの備忘録として簡単ですがまとめてみました。