SSH
SSHは絶対仕事で使う!
手順通りに進めれば理解なくして接続は可能だが、
うまくいかなくなったときに対応策がわからない。
SSHがどういう接続をしているのか、理屈を知ろう!
- 1.SSHとは
- 2.SSH接続認証方式
- 2-1.パスワード認証
- 2-2.クライアント公開鍵登録(パスフレーズ認証)
- 2-2-1.クライアント側で公開鍵と秘密鍵のペアを生成
- 2-2-2.クライアントが生成した公開鍵を接続先のサーバーに登録
- 2-2-3.ペアとなる秘密鍵を持っているクライアントしか接続できないようにする
- 3.ログイン
- 3-1.パスワード認証によるログイン
- 3-2.クライアント公開鍵登録によるログイン
- 3-2-1.接続が成功したら、不要なファイルを削除する
- 4.クライアント公開鍵登録方式の認証によるWinSCPの設定とログイン
- 4-1.WinSCPアプリとは
- 4-2.クライアントの秘密鍵の形式を、OpenSSHからPuTTy形式に変換する
- 4-3.パスワード認証方式での認証をできないように変更する
- 5.おまけ
1.SSHとは
・リモートコンピュータと通信するためのプロトコル
・Secure Shell(セキュアシェル)の略称
・水道管のようなイメージ(暗号化して流すデータは外部から見えない)
2.SSH接続認証方式
・サーバ公開鍵をクライアントが取得する必要がある
・初回接続時に取得する
・接続の種類は2種類
パスワード認証
クライアント公開鍵登録(パスフレーズ認証)
2-1.パスワード認証
長所:改ざん、盗聴、サーバーの偽装を防ぐ
短所:パスワードを盗まれたら、違う端末からSSHでログイン可能(なりすまし)
2-2.クライアント公開鍵登録(パスフレーズ認証)
長所:端末側でも公開鍵ペアを作成し、端末の公開鍵をサーバーに登録することで端末のなりすましを防ぐ
①クライアント側で公開鍵と秘密鍵のペアを生成
②クライアントが生成した公開鍵を接続先のサーバーに登録
③ペアとなる秘密鍵を持っているクライアントしか接続できないようにする
※「パスフレーズ」は「パスワード」とは異なるものである
2-2-1.クライアント側で公開鍵と秘密鍵のペアを生成
・実行コマンド(Windowsターミナル)
> ssh-keygen
・生成された公開鍵と秘密鍵の保管場所 C:\Users\itsys\.ssh
id_rsa.pub クライアントの公開鍵
・上記保管場所にある他のファイル
known_hosts サーバーの公開鍵
→サーバーに接続したときに自動的に追加される
→接続しなくなったサーバーの公開鍵は、手動で削除する
(DNSに接続してないときはIPアドレスで表示されていたので、
どれがなんのサーバーだ…?と不安になったが、
2-2-2.クライアントが生成した公開鍵を接続先のサーバーに登録
・実行コマンド(Max,Linuxの場合)
>ssh-copy-id
※Windowsにはこのコマンドはない!
・実行コマンド(Windowsターミナル)
>scp C:\Users\itsys\.ssh\id_rsa.pub itsys@192.168.56.111:.ssh/
分解!
<コピー元:クライアント>
C:\Users\itsys PCのホームディレクトリ
\.ssh ホームディレクトリ直下の「.ssh」ディレクトリ
\id_rsa.pub 「.ssh」ディレクトリに保管されたクライアントの公開鍵
<コピー先:サーバー>
itsys ログインするサーバーのユーザー名
192.168.56.111 サーバーのIPアドレス
==MEMO============================
scpコマンド(OpenSSHのコマンド)
・SSHによりネットワークを介して違うパソコン同士でファイルをコピーするコマンド
・Linuxのcpコマンドと使い方はほぼ同じ
・相手方のサーバーやPCの指定は「ユーザー名@IPアドレスまたはドメイン」
=================================
・登録ができたか確認!
Windowsターミナルでログインするか、CentOSにて、以下のコマンドを入力
>ls -al .ssh
==MEMO============================
lsコマンド
=================================
2-2-3.ペアとなる秘密鍵を持っているクライアントしか接続できないようにする
CentOSのhome/itsys/.sshディレクトリに、公開鍵登録用ファイル「authorized_keys」を作成する
・touchコマンドで「authorized_keys」という名前の空のファイルを「.ssh」ディレクトリに作成
・内容を流し込む
cat .ssh/id_rsa.pub >> authorized_keys
==MEMO============================
「>」 上書き
「>>」 ファイルを流し込む
=================================
3.ログイン
ログインしてみよう!
3-1.パスワード認証によるログイン
Windowsターミナル
>ssh itsys@192.168.56.111
→パスワードを入力(な)
3-2.クライアント公開鍵登録によるログイン
Windowsターミナル
>ssh itsys@192.168.56.111
→パスフレーズを入力
3-2-1.接続が成功したら、不要なファイルを削除する
2-2-2でクライアントからサーバーへコピーしたクライアントの公開鍵「id_rsa.pub」の中身が「authorized_keys」にきちんと登録されていることが確認できたので、「id_rsa.pub」は削除する
・実行コマンド(Windowsターミナル)
・実行結果確認コマンド(Windowsターミナル)
ls -al .ssh
4.クライアント公開鍵登録方式の認証によるWinSCPの設定とログイン
現在のクライアントの秘密鍵の形式:OpenSSH
→WinSCPアプリはOpenSSH形式だと認識できない!
OpenSSHとは
・主にUNIXコンピュータ間の安全な遠隔操作に用いられるssh(secure shell)のオープンソース実装の一つ
・通信経路の暗号化や認証を強化することで、リモートホストとの通信をより安全にするオープンソースソフトウェア
4-1.WinSCPアプリとは
・ドラッグアンドドロップで、簡単にクライアント・サーバ間でファイル・フォルダのやりとりができる!便利~!
4-2.クライアントの秘密鍵の形式を、OpenSSHからPuTTy形式に変換する
作業内容は以下参照
プリント「SSHによるリモートアクセスとSFTPによるファイル転送([2]クライアント公開鍵登録方式による認証)
4-3.パスワード認証方式での認証をできないように変更する
・実行コマンド(CentOSターミナル)
・下記該当箇所を変更
#PasswordAuthentication yes
↓コメントアウトをやめ、「no」に変更する
PasswordAuthentication no
5.おまけ
known_hostsとauthorized_keysはよく似ている!
両方1行に1つの公開鍵が記載されたテキストファイルで、それぞれ行末にクライアント(接続元)のユーザー名とPC名が記載されている。
・known_hosts
保管場所:クライアント
役割:サーバーの公開鍵(恐らくハッシュダイジェスト)を保存
・authorized_keys
保管場所:サーバー
役割:クライアントの公開鍵を保存