SSH
#ネットワーク #セキュリティ
安全にリモートコンピュータと通信するためのプロトコル
認証
SSHでログインする際は、ホスト認証とユーザ認証が行われる。
ホスト認証
サーバの正当性を確認する。
1. SSHでの通信開始時に、サーバからホスト認証用の公開鍵がクライアントへ送信される。
2. クライアントでランダムなデータを生成し、1で受け取った公開鍵で暗号化して、サーバへ送信する。
3. サーバは受け取ったデータを秘密鍵で複合し、それのハッシュ値を求めて、クライアントへ送信する。
4. クライアント側でも同様にハッシュ値を求め、サーバから受信したハッシュ値と比較する。
接続に成功すると、クライアント側のknown_hostsファイルに、サーバの公開鍵情報が記録される。
SSHの暗号化とホスト認証
ユーザ認証
パスワード認証
デフォルトの認証方式
ユーザID+パスワードを利用する。
公開鍵認証方式と比較すると、セキュリティ的には脆弱
公開鍵認証
事前に生成しておいた公開鍵をサーバに配置することで、
対応する秘密鍵を持つクライアントのみに接続を許可する方式。
バージョン
SSH1
RSA公開鍵暗号
SSH2
RSA公開鍵暗号(DSAより安全性が高い)
DSA公開鍵暗号
認証手順
ユーザがログインをする際に「ホスト認証」と「ユーザ認証」を実施する。
ホスト認証
SSHでの通信開始時に、サーバから公開鍵が送信される。
この公開鍵と~/.ssh/known_hostsに保存された公開鍵情報をもとに、なりすましを防止する。
フィンガープリント
【SSHをはじめて触る人へ】Linuxのホスト間認証とは?
【手順つき】SSHの公開鍵認証のやり方
参考
SSH通信って、結局何してるの?
インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識
SSHできないときのトラブルシューティング
Why doesn't SSH use TLS?
Why would I ssh to 127.0.0.1?
お前らのSSH Keysの作り方は間違っている
第2回 [サーバ・インフラ・ネットワーク編]SSHでありがちなトラブルとその対策―不都合なくSSHを使えていますか?