LinuxのSSHプロトコルの詳細

2720 ワード

一、SSHプロトコル関連概念


SSH:secure shell,protocal,22/tcp,安全なリモートログイン;
SSHプロトコルにより、早期の不安全なtelnetの代わりに、リモート管理中の情報漏洩の問題を効果的に防止
具体的なソフトウェア実装:
  • OpenSSH:sshプロトコルのオープンソース実装.CentOSのデフォルトインストール
  • dropbear:別のオープンソース実装
  • SSHプロトコルバージョン:
  • v 1:CRC-32に基づいてMACを行い、安全ではない.man-in-middle
  • v 2:双方のホストプロトコルは安全なMAC方式
  • を選択する
    DHアルゴリズムに基づいて鍵交換を行い、RSAまたはDSAに基づいてアイデンティティ認証を実現する
    関連パッケージ:
    openssh
    
    openssh-clients
    
    openssh-server
    

    ツール:
      C/S  :
    
    Client:
    
          Linux:ssh,scp,sftp,slogin
    
        Windows:xshell,putty,securecrt,sshsecureshellclient
    
    Server:sshd
    

    クライアントコンポーネント:
    ssh,プロファイル:/etc/ssh/ssh_config
    Host PATTERN
    StrictHostKeyChecking no初回ログインはチェックメッセージを表示しません
    書式:
    ssh [user@]host [COMMAND]
    
    ssh [-l user] host [COMMAND]
    

    オプション:
    -p port                        
    
    -b                    IP
    
    -v                  
    
    -C                  
    
    -X                x11  ,          ;  :xclock
    
    -Y                  x11  
    
    ForwardX11Trusted yes
    
    -t                  tty  ;     
    
    ssh -t remoteserver1 ssh remoteserver2
    

    ユーザー登録認証の2つの方法:
  • password:自分のアカウントとパスワードを知っていれば、リモートホストにログインできます.転送されたデータはすべて暗号化されますが、接続しているサーバが接続したいサーバであることは保証されません.別のサーバが本物のサーバを装っている可能性があります.つまり、「仲介者」という攻撃を受けている可能性があります.大まかな流れ:
  • クライアントはssh要求を開始し、サーバは自分の公開鍵をユーザー
  • に送信する.
  • ユーザは、サーバから送信公開鍵に基づいてパスワードを暗号化する
  • .
  • 暗号化された情報はサーバに返信され、サーバは自分の秘密鍵で復号され、パスワードが正しい場合、ユーザー登録は
  • に成功した.
  • keyベース:スプーンに依存する必要があります.つまり、自分のためにスプーンを1対作成し、アクセスが必要なサーバに共通スプーンを配置する必要があります.SSHサーバに接続すると、クライアントソフトウェアがサーバに要求し、スプーンでセキュリティ検証を要求します.サーバがリクエストを受信したら、まずそのサーバのメインディレクトリの下で共通スプーンを探して、送信した共通スプーンと比較します.2つのスプーンが一致すると、サーバは共通スプーンで「質問」(challenge)を暗号化し、クライアントソフトウェアに送信します.クライアントソフトウェアは「質問」を受け取った後、プライベートスプーンで復号してサーバに送信することができます.大まかな流れ:
  • は、まず、クライアントにおいて一対の鍵
  • を生成する.
  • クライアントの公開鍵ssh-copy-idをサーバ側
  • にコピーする.
  • クライアントがip、ユーザ名
  • を含む接続要求を再送信すると、
  • サービス側がクライアントから要求を受けるとauthorized_keysで検索すると、応答するIPとユーザーがある場合、サーバはacdfなどのランダムな文字列として「質問」(challenge)を発行します.
  • サービス側は、クライアントからコピーする公開鍵を用いて「質問」を暗号化し、クライアント
  • に送信する.
  • がサービス側から「質問」を受けると、クライアントは秘密鍵を用いて復号し、復号後の文字列をサービス側
  • に送信する.
  • サービス側はクライアントからの文字列を受信後、前の文字列と比較し、一致すればパスワードなしで
  • にログインすることを許可する.

    2つのログイン認証の比較:
    keyの認証方式に基づいて、ユーザは自分の鍵のパスワードを指定しなければならない.しかし、第1のレベルと比較して、第2のレベルは、ネットワーク上でパスワードを送信する必要はありません.
    2つ目のレベルは、転送されたすべてのデータを暗号化するだけでなく、「仲介者」という攻撃も不可能です(彼にはあなたのプライベートスプーンがないからです).しかし、ログイン全体のプロセスはpasswdベースの認証よりもやや長く、10秒かかる可能性があります.
    関連ファイル:
    ~/.ssh/authorized_keys                 key        
    
    ~/.ssh/know_hosts                      SSH         
    

    二、SSHサーバーの詳細