ハッピーメモメモ

私的備忘録

SSH

SSHは絶対仕事で使う!

手順通りに進めれば理解なくして接続は可能だが、

うまくいかなくなったときに対応策がわからない。

SSHがどういう接続をしているのか、理屈を知ろう!

 

 

1.SSHとは

・リモートコンピュータと通信するためのプロトコル

・Secure Shell(セキュアシェル)の略称

・水道管のようなイメージ(暗号化して流すデータは外部から見えない)

 

 

2.SSH接続認証方式

・サーバ公開鍵をクライアントが取得する必要がある

・初回接続時に取得する

・接続の種類は2種類

  パスワード認証

  クライアント公開鍵登録(パスフレーズ認証)

 

2-1.パスワード認証

長所:改ざん、盗聴、サーバーの偽装を防ぐ

短所:パスワードを盗まれたら、違う端末からSSHでログイン可能(なりすまし)

 

2-2.クライアント公開鍵登録(パスフレーズ認証)

長所:端末側でも公開鍵ペアを作成し、端末の公開鍵をサーバーに登録することで端末のなりすましを防ぐ

 

①クライアント側で公開鍵と秘密鍵のペアを生成

②クライアントが生成した公開鍵を接続先のサーバーに登録

③ペアとなる秘密鍵を持っているクライアントしか接続できないようにする

 →この秘密鍵を利用するための合言葉を「パスフレーズ」という

  ※「パスフレーズ」は「パスワード」とは異なるものである

 

2-2-1.クライアント側で公開鍵と秘密鍵のペアを生成

・実行コマンド(Windowsターミナル)

 > ssh-keygen

・生成された公開鍵と秘密鍵の保管場所 C:\Users\itsys\.ssh

  id_rsa   クライアントの秘密鍵

  id_rsa.pub クライアントの公開鍵

・上記保管場所にある他のファイル

  known_hosts サーバーの公開鍵

  →サーバーに接続したときに自動的に追加される

  →接続しなくなったサーバーの公開鍵は、手動で削除する

  (DNSに接続してないときはIPアドレスで表示されていたので、

   どれがなんのサーバーだ…?と不安になったが、

   DNSに接続すればドメインが表示されるので大丈夫!)

 

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アドレス

 .ssh/      ホームディレクトリの中の格納するディレクト

 

==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ターミナル)

 rm .ssh/id_rsa.pub

 

・実行結果確認コマンド(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ターミナル)

sudo vi /etc/ssh/sshd_config

 

・下記該当箇所を変更

#PasswordAuthentication yes

コメントアウトをやめ、「no」に変更する

PasswordAuthentication no

 

 

5.おまけ

known_hostsとauthorized_keysはよく似ている!

両方1行に1つの公開鍵が記載されたテキストファイルで、それぞれ行末にクライアント(接続元)のユーザー名とPC名が記載されている。

・known_hosts

保管場所:クライアント

役割:サーバーの公開鍵(恐らくハッシュダイジェスト)を保存

・authorized_keys

保管場所:サーバー

役割:クライアントの公開鍵を保存