星期二, 6月 30, 2015

Java Web Start - ArrayIndexOutOfBoundException: 8

最近一連檢查到三部主機(Windows Server 2008 R2 64 bit)都有同樣的問題:首先是因為要裝 Jenkins Slave (JNLP),不是最新版 JRE 會有問題,所以升級到 Version 8 Update 45。升級後有的是在跑 JNLP 時出錯,有的更糟,在驗證 Java 安裝版本就不行了,錯誤都如標題,取代了我們期望的 Applet 簽署說明。





























首先,不論 IE 版本(8~11)為何,一律恢復原廠設定,再關閉 Server 上瀏覽器的增強式安全性設定 ESC;接著奇怪的解法來了(在 IE 設定):
  • 網際網路選項
  • 連線
  • LAN 設定
  • 自動設定
  • 自動偵測設定<-勾選
為何瀏覽器的代理伺服器設定這麼重要?因為 Java Console 的網路設定預設「依瀏覽器設定」,而 JNLP 或 Applet 的下載都是透過 Java Console 設定控制,這也提示了另一種解法,直接修改 Java Console 的網路設定。
至於 IE 的代理伺服器「自動偵測設定」為何沒有勾選?還不清楚。因為重新安裝了幾次乾淨虛擬機,或升級新版瀏覽器,或恢復出廠預設值,這裏總是在已勾選狀態的。

星期五, 6月 12, 2015

權限太多也不行?

要以 A 主機的使用者 u1 透過 SSH 連到 B 主機的使用者 u2 身分,有兩種方式:
  • login as u1 on A, ssh u2@B, password required.
  • login as u1 on A, generate key pair, save [A] /home/u1/.ssh/id_rsa.pub to [B] /home/u2/.ssh/authorized_keys, ssh u2@B, password NOT required.
但好玩的來了:如果 /home/u2/.ssh 的權限是 700 或 755 都可以免密碼,但 777 就不行了?如果 /home/u2/.ssh/authorized_keys 的權限是 400 或 700 也都可以免密碼,但 777 又不行?