60 likes | 772 Views
クライアント (TTSSH). サーバ (OpenSSH). TCP/22 接続. SSH2 のログインシーケンス. バージョン情報交換. SSH-1.99-OpenSSH_4.3p2 Debian-9<br>. SSH-2.0-TTSSH/2.46 Win32<br>. キー交換開始. SSH2_MSG_KEXINIT. SSH2_MSG_KEXINIT. SSH2_MSG_KEX_DH_GEX_REQUEST. DH(Diffie-Hellman) 鍵の生成. SSH2_MSG_KEX_DH_GEX_GROUP. SSH2_MSG_KEX_DH_GEX_INIT.
E N D
クライアント (TTSSH) サーバ (OpenSSH) TCP/22接続 SSH2のログインシーケンス バージョン情報交換 SSH-1.99-OpenSSH_4.3p2 Debian-9\n SSH-2.0-TTSSH/2.46 Win32\n キー交換開始 SSH2_MSG_KEXINIT SSH2_MSG_KEXINIT SSH2_MSG_KEX_DH_GEX_REQUEST DH(Diffie-Hellman)鍵の生成 SSH2_MSG_KEX_DH_GEX_GROUP SSH2_MSG_KEX_DH_GEX_INIT “known_hosts”チェック SSH2_MSG_KEX_DH_GEX_REPLY SSH2_MSG_NEWKEYS DH鍵生成終了 SSH2_MSG_NEWKEYS SSH2_MSG_SERVICE_REQUEST これ以降はパケットがDH鍵(共通鍵)で 暗号化されるため、パケットキャプチャ 不可となる。 ユーザ認証開始 SSH2_MSG_SERVICE_ACCEPT
クライアント (TTSSH) サーバ (OpenSSH) 認証リストの要求 “none”メソッド SSH2_MSG_USERAUTH_REQUEST CheckAuthListFirstが有効なとき (無効なときは、クライアントはユーザ操作による認証失敗により認証リストを得られる) SSH2のログインシーケンス(続き) SSH2_MSG_USERAUTH_FAILURE ユーザ名とパスワードを送信 SSH2_MSG_USERAUTH_REQUEST 認証リストの送信。 “failure”を返すがサーバにはログは残らない。 SSH2_MSG_USERAUTH_SUCCESS 認証成功 SSH2_MSG_CHANNEL_OPEN セッションオープン “session” password認証の場合 SSH2_MSG_CHANNEL_OPEN_CONFIRMATION エージェント転送 "auth-agent-req@openssh.com" SSSH2_MSG_CHANNEL_REQUEST SSH2_MSG_CHANNEL_SUCCESS シェルリクエスト “pty-req” SSH2_MSG_CHANNEL_REQUEST ForwardAgentが有効なとき SSH2_MSG_CHANNEL_SUCCESS シェルオープン “shell” SSH2_MSG_CHANNEL_REQUEST SSHサーバのウィンドウサイズを送る SSH2_MSG_CHANNEL_WINDOW_ADJUST TeraTerm本体へ渡す。TeraTerm見えには、recv()が返ったように見える。 SSH2_MSG_CHANNEL_SUCCESS シェル情報を送る SSH2_MSG_CHANNEL_DATA
クライアント (TTSSH) サーバ (OpenSSH) シェル上でログアウトする SSH2_MSG_CHANNEL_DATA SSH2の切断シーケンス SSH2_MSG_CHANNEL_REQUEST SSH2_MSG_CHANNEL_EOF TCPセッションのクローズ処理を行う。 TeraTerm本体へ終了の通知を出す。 SSH2_MSG_CHANNEL_CLOSE SSH2_MSG_DISCONNECT