ssh 用戶端不支援舊版加密解法

新的ssh 用戶端已經不支援舊版的加密方式, 因此若伺服器提供的sshd 加密過舊, 則必須手動調整,讓ssh 用戶端強制使用舊版方式連線.

做法就是先確認伺服器提供的加密法

# ssh -l root 192.168.1.1
Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

然後請視情況(錯誤訊息), 更改演算法與支援的key

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss -l root  x.x.x.x 

若連線還是失敗, 出現以下錯誤

ssh_dispatch_run_fatal: Connection to 192.168.1.1 port 22: error in libcrypto

用戶端嘗試執行以下指令

update-crypto-policies --set LEGACY

上班打卡鐘資料格式轉換(java 8)

導入新系統最麻煩的就是: 新舊系統並行,

舊的考勤導出文件只有一種格式, 因此新系統必須能夠讀懂舊文件, 再導進新系統,

若無法讀取, 或是舊版打卡有缺陷, 例如2021沒有20,只有21, 那必須寫轉資料程式, 加上20, 反正就是把一份純文字, 再加工轉成另一份純文字文件.

JAVA 文件範例如下,請自行加工:

android取得藍芽裝置連線狀態

Java

public static boolean isConnected(BluetoothDevice device) {
    try {
        Method m = device.getClass().getMethod("isConnected", (Class[]) null);
        boolean connected = (boolean) m.invoke(device, (Object[]) null);
        return connected;
    } catch (Exception e) {
        throw new IllegalStateException(e);
    }
}

Kotlin

fun isConnected(device: BluetoothDevice): Boolean {
  return try {
    val m: Method = device.javaClass.getMethod("isConnected")
    m.invoke(device) as Boolean
  } catch (e: Exception) {
    throw IllegalStateException(e)
  }
}

運作中AD Server,vm操作不當被刪,還原後悲哀結局

運作中網域伺服器(AD Server), 因操作不當其vm被刪除, 剛好兩天前有snapshot, 於是還原起來, 乍看之下運作正常, 其實是失敗.

因內網有兩個AD, 被刪除AD的資料早已跟另一台同步,因此回朔兩天前AD, 其資料也是異常的, 間接造成各式各樣,依賴網域認證的系統, 跟著異常, 好慘.


原本想說來個強制重新同步,將還原的AD,強制從正常的AD同步回來, 但是怕怕的, 還是決定刪了就刪了,也不還原, 再另外安裝一台AD重新同步吧.


postfix ldap測試/查詢帳號是否存在

postfix 很常見搭配微軟的AD , AD的設定檔長這樣, 檔案名稱為 xxx.cf

server_host = <AD server IP>
search_base = ou=xx,dc=yyy,dc=com
version = 3
query_filter = (&(objectclass=*)(mail=%s))
result_attribute = samaccountname  #Account from DC
result_format = %s/Maildir/
bind = yes
bind_dn = cn=zzz,cn=Users,dc=yyy,dc=com
bind_pw = password

配合以下指令,可以用來查詢email對應的帳號是否正確

postmap -q  abc@yyy.com ldap:/directory/xxx.cf

這樣就可以測試帳號是否存在了

1 ... 17 18 19 20 21 ... 58