DDEのしくみ - Tera Term Open Source Project

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