private def sendVersionString(out: OutputStream, clientVersion: String) { out.write((clientVersion+ "\r\n").getBytes) } private def recvVersionString(in:InputStream): String = { val reader = new BufferedReader(new InputStreamReader(in)) var serverString = "" //"SSH-" で開始しない文字列は無視する do { serverString = reader.readLine } while (!serverString.startsWith("SSH-")) serverString } private def exchangeVersion(in: InputStream, out: OutputStream, clientVersion: String) = { //バージョン文字列の交換 //CR LF 区切りの文字列でやりとりする //クライアントからバージョン文字列を送る sendVersionString(out, clientVersion) //サーバからバージョン文字列を受け取る val serverVersion = recvVersionString(in) //version のすり合わせは省略している //クライアントとサーバのバージョン文字列は鍵の生成で利用するので //サーバのバージョン文字列を返す serverVersion }
% telnet localhost 22 (git)-[master] Trying ::1... Connected to localhost. Escape character is '^]'. SSH-2.0-OpenSSH_5.8p1 Debian-4