Implementing SSH in Java

15,842 views

Published on

Published in: Technology

Implementing SSH in Java

  1. 1. Java で SSH を実装しています ymnk 1000speakers@Sendai#1(2008/11/22)
  2. 2. 自己紹介 • 山中淳彦(ymnk) • 株式会社ジェイクラフト (JCraft,Inc.) • Java • 最近は、Scala • Scala勉強会@東北 • Eclipse.org の Platform Project で committer • でも、普段は emacs でプログラムを書いてます
  3. 3. 内容 • 自己紹介 • SSHとは • Javaによる実装 JSch • Uses of JSch • 今後の予定 • まとめ
  4. 4. SSH とは
  5. 5. SSHとは(1) • Secure Shell(secsh) • Wikipedia: “Secure Shell” から – 暗号や認証の技術を利用して、安全にリモートコン ピュータと通信するためのプロトコル。パスワードなど の認証部分を含むすべてのネットワーク上の通信が 暗号化される。 • リモートログイン、scp、sftp、port-fowarding • SSH-1(脆弱性や制限あり)、SSH-2 SSHは、SSH社の登録商標(米国)です
  6. 6. SSHとは(2) • 1995年、 Tatu Ylönen がフリーウェアとして第 一版をリリース(SSH-1) • 瞬く間に世界中にひろまる • 同年12月、 Ylönen がSSH社を設立 →ソースは非公開に • 1996年、SSH社が SSH-2を設計・実装 • 1999年、有志がフリーな頃のコードを元にfork →のちの OpenSSH • 2000年、OpenSSH が SSH-2に対応 SSHは、SSH社の登録商標(米国)です
  7. 7. SSHとは(3) • RFC4250: Assigned Numbers • RFC4251: Protocol Architecture • RFC4252: Authentication Protocol • RFC4253: Transport Layer Protocol • RFC4254: Connection Protocol • RFC4256: Generic Message Exchange Auth • RFC4344: Transport Layer Encryption Modes • RFC4419: DH Group Exchange for Transport Layer • RFC4462: GSSAPI Authentication and Key Exchange • RFC4335 、RFC4716、RFC4819、RFC4255 • DRAFT: SSH File Transfer Protocol SSHは、SSH社の登録商標(米国)です
  8. 8. Java による実装 JSch
  9. 9. Javaによる実装 JSch (1) • JSch(Java Secure Channel) • SSH-2のクライアント側を実装 – shell(リモートログイン) – exec – scp – port-forwarding • J2SE(1.4以降)、J2ME CDC・CLDC(MIDP2.0) • 修正BSDライセンス • 開発開始: 2003年1月
  10. 10. Javaによる実装 JSch (2) • JCraft,Inc. 単独で開発 • 関連する自製ソフトウェア – JZlib – JCTerm – JCTerm Plug-in for Eclipse – SFtp Plug-in for Eclipse – CVS-SSH2 Plug-in for Eclipse
  11. 11. Uses of JSch
  12. 12. Uses of JSch: Eclipse (1) • Eclipse 3.0より Eclipse SDK に同梱 • Help > About Eclipse SDK > Plug-in Details
  13. 13. Uses of JSch: Eclipse (2) • 当初は、CVSの通信の暗号化のために導入 Eclipse 3.0以降の変更 = dev.eclipse.org の CVS repository へのコミット 全て、JSch を介してます!! • org.eclipse.jsch.{core,ui}Plug-in、DSDP-TM
  14. 14. Uses of JSch: Eclipse (3) • committerになったお祝いにトロントからTシャツ とキャップが送られてきました:-)
  15. 15. Uses of JSch: NetBeans (1) • NetBeans 5.0よりプラットフォームに同梱 • http://www.netbeans.org/about/legal/code_depe ndency_matrix.html
  16. 16. Uses of JSch: NetBeans (2)
  17. 17. Uses of JSch: NetBeans (3) • ある日の “NetBeans for PHP” ブログから http://blogs.sun.com/netbeansphp/
  18. 18. Uses of JSch: Apache Project • Apache Ant (1.6.0以降) • Apache Commons VFS • Ivy、Maven Wagon、Synapse • Chainsaw、Forrest、Pig(Hadoopのsubproject?) • http://www.apache.org/licenses/exports/
  19. 19. Uses of JSch: その他 • Included in Fedora Core 4(and later) • JAlbum • Sancho • JIRA • WikiPageOutputStreamPlug-in for Trac • Rational Application Developer for Websphere • HP Storage Essentials • etc.,
  20. 20. 今後の予定
  21. 21. 今後の予定 • “Plaintext Recovery Attack Against SSH” へ の対処(コード的には済) • SSHサーバの実装、sftp サーバの実装 • 認証・暗号通信部分の切り出し – 他のアプリでも簡単に暗号通信ができるように – UDP上で SSH ?
  22. 22. まとめ
  23. 23. まとめ • Java で SSH を実装してます • JSch をどこかで見かけたら、 この発表と 1000speakers@Sendai#1 のことを思い出していただけると幸いです
  24. 24. ありがとうございました
  25. 25. Q&A

×