Web開発者ロードマップを学習する 第7章 SSH
はじめに
WEB DEVELOPER Roadmap 2021 に
webエンジニアが身につけておくべきスキルの順序が示されています。
このロードマップに沿って、各スキルの要点を抑えた記事を書きます。
WEB DEVELOPER Roadmap 2021 Introduction
- Git - Version control
- Basic Terminal Usage
- Data Structures & Algorithms
- Git Hub
- Licenses
- Semantic Versioning
- SSH
- HTTP/HTTPS and APIs
- Design Patterns
- Character Encodings
今回はSSHについて学習します。
まとめた記事は今後リンク更新していきます!
SSH(Secure Shell セキュアシェル)とは?
- ネットワーク上のコンピューターを遠隔操作(ファイル転送など)・管理する
- 通信経路を暗号化、認証を利用した通信プロトコル
- クライアントがサーバーを操作する際に利用される
- 悪意のある第三者の介入を防ぐ
例 GitHubなどのリモートリポジトリの操作、 AWSの操作
SSHの認証方法
パスワード認証
- パスワードでログインする方法
- パスワードは暗号化される
- ハッシュ化されたパスワードならそれなりの強度をもつ
- サーバー側に悪意があった場合かつ他で同じパスワードを使用している場合
→ 漏洩・悪用のリスク
公開鍵認証
- 公開鍵と秘密鍵の2つの鍵を使用した方法
- パスワードなしでログイン可能
- クライアント側に秘密鍵を、サーバ側に公開鍵をおいて使用する
- 秘密鍵を使ってクライアントが署名を作成、公開鍵でそれを検証
公開鍵認証の仕組みについて詳しくは以下の記事を参照してください。
→SSHの公開鍵認証における良くある誤解の話
→公開鍵暗号関連のテキストの間違いの典型例
sshd
- SSH接続を受け付ける際の設定
-
/etc/ssh/sshd_congit
ファイルの中で管理されている - サーバーをインターネットに公開する場合、sshdの設定をセキュリティー面を考慮して設定する必要がある
以下の点に気を付ける
- rootのリモートログイン
PermitRootLogin - 認証方式
PasswordAuthentication, ChallengeResponseAuthentication - 公開鍵認証の有効化
RSAAuthentication,PubkeyAuthentication
src(Secure Copy)
- SSH接続を利用してファイルコピーを転送する
- サーバー側にもsrcがインストールされている必要がある
- コマンドでファイルの転送が可能
SSHコマンド
- SSH接続する際に使用する
- コマンドを省略すると接続状態のままになる
- コマンドを指定すると接続後に実行されログアウトされる
- ログアウトしたい時はexitを入力する
$ ssh [オプション] ユーザー名 [コマンド]
オプション | 説明 |
---|---|
-i | 秘密鍵ファイルを指定 |
-p | ポート番号の指定 |
sshのファイル関連
| ファイル名 | 内容 |
| ---- | ---- | ---- |
| ~/.ssh/config | • SSH接続の情報を定義できる
• SSHコマンドオプションを省略することが可能 |
| ~/.ssh/ssh_known_hosts | 接続したことがあるサーバー |
| ~/.ssh/rc | ログイン後に実行するファイル |
| ~/.ssh/authorized_keys | ログインユーザーの公開鍵 |
| ~/.ssh/id_rsa | ssh-keygenで生成した秘密鍵 |
| ~/.ssh/id_rsa.pub | ssh-keygenで生成した公開鍵 |
→インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識
AWSのEC2でSSH接続してみる
※EC2とは
→ AWSのクラウド上の仮想サーバーのことです
AWS上でキーペアを作成、ローカルにダウンロード
※ターミナル上でssh-keygenコマンドを使ってキーペアを作成することも可能です。以下参考。
→Amazon Linux (EC2) に秘密鍵でSSH接続できるようにする
ダウンロードした秘密鍵のファイルの読み書き権限を所有者のみに設定
$ chmod 600 ~/Downloads/sample-ssh-key.pem
-iで秘密鍵を指定し、EC2に接続
※ec2-user@13.231.194.109→ユーザー名
$ ssh -i ~/Downloads/sample-ssh-key.pem ec2-user@13.231.194.109
接続完了
The authenticity of host '13.231.194.109 (13.231.194.109)' can't be established.
ECDSA key fingerprint is SHA256:mkbvlRJrrdt90UFq+YEiZUoByVpBdkhrWS/WSiymGyM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '13.231.194.109' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-10-10 ~]$
接続後~/.ssh/authorized_keysの中身を見ると公開鍵か登録されている
[ec2-user@ip-10-0-10-10 ~]$ cat ~/.ssh/authorized_keys
AAAAB3NzaC1yc2EAAAADAQABAAABAQDQOUaVApRX3tY/JdUc0NfKlpWm8bg/W6t2VhOT8wQyaDv
〜
以下の記事参考にさせていただきました。
→【SSH】公開鍵認証とEC2について
Discussion