SlideShare a Scribd company logo
OSPN
今さら聞けない人のための
SSH超入門
日本仮想化技術株式会社
宮原 徹(@tmiyahar)
OSPN
本資料のライセンスについて
• 本資料はクリエイティブコモンズの「表示 -
継承 4.0 国際 (CC BY-SA 4.0) 」でライセン
スされています。
2
表示 — あなたは適切なクレジットを表示し、ライセンスへのリンク
を提供し、変更があったらその旨を示さなければなりません。あな
たはこれらを合理的などのような方法で行っても構いませんが、許
諾者があなたやあなたの利用行為を支持していると示唆するよう
な方法は除きます。
継承 — もしあなたがこの資料をリミックスしたり、改変したり、加工
した場合には、あなたはあなたの貢献部分を元の作品と同じライセ
ンスの下に頒布しなければなりません。
OSPN
本日の内容
SSHの基本について理解することを目標に関係
する知識についても解説します
• Linuxの管理者権限
• 公開鍵認証を使ったSSH接続
以下の環境を使って検証しています
• OS:AlmaLinux 9.2(ARM版)
• SSHクライアント:macOS版sshコマンド
3
OSPN
管理者権限
SSHの話に入る前に
root権限の取り扱いと
suコマンドやsudoコマンドを理解する
4
OSPN
なぜ管理者権限の話?
• SSHでリモートログインするのはシステム
管理が目的
• SSHはセキュアなユーザー認証や暗号化
通信でリモート作業を保護
• システム管理権限の適切な理解と設定が
無いとセキュリティを担保できない
5
OSPN
root権限の取り扱い
A. rootで直接ログイン
– sshdの設定で制御可能(PermitRootLogin)
– 公開鍵認証でrootとしてログインさせる
• パスワード認証は無効化
B. 一般ユーザーでログインさせる
a. suコマンドを実行してrootに変更
• 設定作業が多いインストール直後には向いている
• rootとして実行したコマンドは記録されない
b. sudoコマンドを実行してroot権限でコマンド実行
• コマンド実行履歴が/var/log/secureに記録される
OSPN
su コマンド実行の制限
• PAMを設定してsuコマンドの実行を制御
– trust:suコマンド実行時にrootパスワードを要求しない
– require:suコマンドを実行するにはwheelグループに所
属している必要がある
• /etc/pam.d/suを編集
– 設定のコメントアウトを外して保存すると即時有効
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficientpam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
参考
OSPN
sudo コマンドの制御
• /etc/sudoersで制御
– パーミッション400なので編集できない
– 編集にはvisudoコマンドを使用
• 実行ユーザーのパスワードが必要
– 設定でパスワード不要にできる
• sudoersの書式は以下の通り
ユーザー ホスト=(実行ユーザー) [NOPASSWD:] コマンド
%グループ ホスト=(実行ユーザー) [NOPASSWD:] コマンド
OSPN
/etc/sudoersの設定例
## Allow root to run any commands anywhere
root ALL=(ALL) ALL ←rootは何でもOK
(略)
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
↑wheelグループ所属は何でもOKだがパスワードが必要
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL ALL
↑wheelグループ所属は何でもOKでパスワードが不要
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
↑usersグループで実行できるコマンドを指定した形式
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
↑usersグループでこのホストだけで実行できるコマンドを指定した形式
9
このいずれかを有効に
することが多い
OSPN
公開鍵認証を使ったSSH接続
10
OSPN
SSHをしっかり理解しよう
• SSHは暗号化通信でリモートログインする
仕組み
– ファイル転送やX11プロトコル等の転送も可能
• パスワード認証、公開鍵認証、ホスト認証
などをサポート
– パスワード認証は危険
– 公開鍵認証を設定後にSSHサーバーでパス
ワード認証は無効に設定
11
OSPN
公開鍵認証の設定
1. 公開鍵・秘密鍵の生成
– ssh-keygenコマンドを実行
– 秘密鍵にパスフレーズを設定
– ~/.sshディレクトリに秘密鍵、公開鍵のペアが生成
2. 公開鍵をサーバーに設置
– ~/.ssh/authorized_keysに追加
– 所有権をログインするユーザー、パーミッションを
~/.sshは700、authorized_keysは600に設定
3. サーバーに接続
– sshコマンドを実行
– 初回のみホスト証明書の受け入れ確認
– 2回目以降は~/.ssh/known_hostsと照合
OSPN
公開鍵・秘密鍵の作成
% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tmiyahar/.ssh/id_rsa):(エンターキー)
Enter passphrase (empty for no passphrase):(パスフレーズは非表示)
Enter same passphrase again:(パスフレーズは非表示)
Your identification has been saved in /Users/tmiyahar/.ssh/id_rsa
Your public key has been saved in /Users/tmiyahar/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:E59fCUG1YBC8frrfcDCtyvTi9vNUQHcLuo7Zik/hSnE tmiyahar@Toru-MBP-16
↑フィンガープリントは公開鍵のハッシュ値
$ ls -l .ssh
合計 8
-rw------- 1 tmiyahar staff 2655 10 22 12:37 id_rsa ←秘密鍵
-rw-r--r-- 1 tmiyahar staff 574 10 22 12:37 id_rsa.pub ←公開鍵
13
OSPN
公開鍵の種類
• ssh-keygenコマンドの–tオプションで指定
• 選択可能な鍵
– dsa
– ecdsa
– ecdsa-sk
– ed25519
– ed25519-sk
– rsa
14
←FIDOとかに関係あるらしい
←TTSSHのデフォルトになったみたい
←ssh-keygenのデフォルトらしい
OSPN
公開鍵の設置
1. 接続先サーバにユーザーを作成
2. (passwdコマンドでパスワードを設定)
3. 作成したユーザーにsuコマンドで切り替え
4. ~/.sshディレクトリを作成
– 所有者は作成したユーザー
– パーミッションは700
5. ~/.ssh/authorized_keysファイルを作成
– 所有者は作成したユーザー
– パーミッションは600
6. 公開鍵(id_rsa.pub)の内容をauthorized_keysに追記
– 公開鍵の情報をどうやってサーバーに持って行く?
15
OSPN
サーバーに公開鍵を設置
# useradd sshuser ←ログインするユーザーを作成
# su - sshuser ←作業するユーザーを変更
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh
$ touch autorized_keys
$ chmod 600 autorized_keys
$ cat id_rsa.pub >> autorized_keys
↑ファイルがあらかじめ配置されている前提だが、どうやっ
てファイルを持ってくるかが問題
16
OSPN
公開鍵のサーバへの転送
A) ターミナルに対してコピー&ペースト
– 公開鍵は単なるテキストなので
– 安全な接続を経由して行うこと
B) scpコマンドやsftpコマンドで転送
– SELinuxが有効な場合、/tmpなどに転送したファイル
をコピーして使わないこと
– 必ずcatコマンドでauthorized_keysに追記
C) ssh-copy-idコマンドを実行
– 転送からauthorized_keys配置まで自動実行
• クラウドの場合、あらかじめ登録しておく
17
OSPN
sshコマンドで接続
% ssh sshuser@192.168.156.101
The authenticity of host '192.168.156.101 (192.168.156.101)' can't be established.
ED25519 key fingerprint is SHA256:nKWsgCAF9YdR02YZKp0QqIk0/TDy/PzUJHCQnNCtxjM.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.156.101' (ED25519) to the list of known hosts.
Enter passphrase for key /Users/xxx/.ssh/id_rsa ': (パスフレーズを入力。非表示)
[sshuser@server ~]$
• 初めて接続するサーバーはホスト証明書が送られ
てくる
• yesと入力することで~/.ssh/known_hostsに
記録される
• 次回以降はホスト証明書を照合
– 異なっている場合には警告を表示して接続させない
(サーバーのすり替えなどの防止)
18
OSPN
OpenSSHサーバの設定
• /etc/ssh/sshd_configを設定
– デフォルトのままではセキュリティ的にやや問題
– 特に以下の2点については設定変更が必要
– 設定後sshdサービスを再起動
① PasswordAuthentication
– パスワード認証の可否を設定
– 公開鍵認証を設定後、設定をnoに変更する
• 設定しないとパスワード総当たり攻撃の対象に
② PermitRootLogin
– 直接rootでログインすることの可否を設定
– noに設定し、一般ユーザーでログイン後にsuやsudoでroot
権限を取得するやり方が多い?
OSPN
最近のSSHサーバーの設定
• /etc/ssh/sshd_configの設定
– PermitRootLogin prohibit-password
– rootでのパスワード認証は許可されていない
• これとは別に/etc/ssh/sshd_config.d/01-
permitrootlogin.confが作成されている
– インストール時に「パスワードによるroot SSHログ
インを許可」をチェックしている場合
– sshd_configを修正するだけでなく01-
permitrootlogin.confも削除する必要がある
20
# This file has been generated by the Anaconda Installer.
# Allow root to log in using ssh. Remove this file to opt-out.
PermitRootLogin yes
OSPN
その他メモ
• 公開鍵認証の完全で詳細な仕組みは複雑すぎて
説明しにくい
– セッションID、共通鍵、電子署名等、複数の要素を同
時に処理しているため
– 興味がある人は自分で調べてみて
• Tera Termがバージョンアップ(V5)
– TTSSH V3でRSA鍵/SHA-2署名に対応
– AWSで嬉しいらしい
• 二段階認証とかもできるよ
– Google Authenticatorを使ったり
• いろいろ便利な使い方もあるみたいだけど、その
辺は自分で調べてみてね
21

More Related Content

PDF
HSM超入門講座
PPTX
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
Re: ゼロから始める監視設計
PDF
ネットワーク構築訓練 入門
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
HSM超入門講座
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
20190911 AWS Black Belt Online Seminar AWS Batch
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Re: ゼロから始める監視設計
ネットワーク構築訓練 入門
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)

What's hot (20)

PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
PPTX
これがCassandra
PDF
インターネットの仕組みとISPの構造
PDF
AWSのログ管理ベストプラクティス
PPTX
マイクロサービスにおける 結果整合性との戦い
PDF
DNSのRFCの歩き方
PDF
20210526 AWS Expert Online マルチアカウント管理の基本
PDF
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
PPTX
本当は恐ろしい分散システムの話
PDF
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
PDF
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
PPTX
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
PPTX
Azure仮想マシンと仮想ネットワーク
PPTX
AWSで作る分析基盤
PDF
flaws.cloudに挑戦しよう!
PDF
AWS X-Rayによるアプリケーションの分析とデバッグ
PDF
AWS BlackBelt AWS上でのDDoS対策
PDF
3分でわかるAzureでのService Principal
PDF
DevOps with Database on AWS
Serf / Consul 入門 ~仕事を楽しくしよう~
これがCassandra
インターネットの仕組みとISPの構造
AWSのログ管理ベストプラクティス
マイクロサービスにおける 結果整合性との戦い
DNSのRFCの歩き方
20210526 AWS Expert Online マルチアカウント管理の基本
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
本当は恐ろしい分散システムの話
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
Azure仮想マシンと仮想ネットワーク
AWSで作る分析基盤
flaws.cloudに挑戦しよう!
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS BlackBelt AWS上でのDDoS対策
3分でわかるAzureでのService Principal
DevOps with Database on AWS
Ad

Similar to SSH超入門 (11)

PPTX
今さら聞けない人のためのSSH超入門
PPTX
Linuxシステム管理入門
PPTX
9/9 Linuxシステム管理入門
PPTX
Linuxシステム管理入門
PPTX
OpenSSHの認証に証明書を使う
PPTX
9/10 Linuxシステム管理入門
PPTX
Linuxシステム管理入門 2018/02/23
PPTX
STNSサーバーを書いてみた
ODP
sshdのお話
PDF
誰得コマンド&オプション35連発
PPTX
自分のPcに仮想環境を作ってlinuxをインストールしてみよう
今さら聞けない人のためのSSH超入門
Linuxシステム管理入門
9/9 Linuxシステム管理入門
Linuxシステム管理入門
OpenSSHの認証に証明書を使う
9/10 Linuxシステム管理入門
Linuxシステム管理入門 2018/02/23
STNSサーバーを書いてみた
sshdのお話
誰得コマンド&オプション35連発
自分のPcに仮想環境を作ってlinuxをインストールしてみよう
Ad

More from Toru Miyahara (20)

PPTX
今さら聞けない人のためのDevOps超入門 OSC2024 Online/Fall版
PPTX
爆速!DBチューニング超入門 〜DB性能の基礎とPG-Stromによる高速化〜 OSC2024 Online/Fall版
PPTX
今さら聞けない人のためのDevOps超入門 ODC2024 9月7日バージョン
PPT
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
PPTX
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
PPTX
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
PPTX
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
PPT
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
PPTX
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
PPTX
2024/03/02 『Linuxサーバー構築標準教科書』V4をリリースしました
PPTX
2024/03/01 今さら聞けない人のためのDevOps超入門 OSC2024 Online/Spring
PPTX
2024/03/01 爆速!DBチューニング超入門 〜DB性能の基礎とGPU活用による高速化〜
PPTX
DevOps超入門 〜DevSecOps実現に向けたはじめの一歩〜
PPTX
今さら聞けない人のためのDevOps超入門
PPTX
DBチューニング超入門
PPTX
これから始めるDevOps
PPTX
今さら聞けない人のためのバックアップ超入門
PPTX
やってみよう!Pi-Stopで学ぶRaspberry Pi+Pythonプログラミング
PPTX
今さら聞けない人のためのDocker超入門
PPTX
Raspberry Piでハイレゾ音源を鳴らそう
今さら聞けない人のためのDevOps超入門 OSC2024 Online/Fall版
爆速!DBチューニング超入門 〜DB性能の基礎とPG-Stromによる高速化〜 OSC2024 Online/Fall版
今さら聞けない人のためのDevOps超入門 ODC2024 9月7日バージョン
今年こそ始めたい!SQL超入門 MIRACLE Linux Meetup版 0620
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
DB性能の基礎 DB性能高速化入門 〜基礎から列指向、GPU活用まで〜 宮原 徹
2024/03/02 『Linuxサーバー構築標準教科書』V4をリリースしました
2024/03/01 今さら聞けない人のためのDevOps超入門 OSC2024 Online/Spring
2024/03/01 爆速!DBチューニング超入門 〜DB性能の基礎とGPU活用による高速化〜
DevOps超入門 〜DevSecOps実現に向けたはじめの一歩〜
今さら聞けない人のためのDevOps超入門
DBチューニング超入門
これから始めるDevOps
今さら聞けない人のためのバックアップ超入門
やってみよう!Pi-Stopで学ぶRaspberry Pi+Pythonプログラミング
今さら聞けない人のためのDocker超入門
Raspberry Piでハイレゾ音源を鳴らそう

SSH超入門