點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!
最近有一個修改linux主機過期密碼的需求,因為涉及重置密碼的過程比較麻煩,中間要設置好幾次臨時密碼。那么通過程序來實現的話就比較簡單了。
1
使用工具
我使用的是jsch。首先介紹下:
jsch是SSH2的一個純Java實現。它允許你連接到一個sshd 服務器,使用端口轉發,X11轉發,文件傳輸等等。你可以將它的功能集成到你自己的程序中。同時該項目也提供一個J2ME版本用來在手機上直連SSHD服務器。
jsch進行服務器連接時可以看作類似java的jdbc連接,首先需要實例化一個jsch對象,再利用這個對象根據用戶名,主機ip,端口獲取一個Session對象,設置好相應的參數后,進行連接,創建連接后,這個Session時一直可用的,所以不需要關閉。之后我們需要在Session上建立channel通道。如下圖:
那么到這里,基本就可以去實現自己的邏輯了。
2
實現過程
跟著上面步驟繼續走,我們通過jsch連接到對應的linux主機上執行修改密碼的shell命令,對linux主機密碼進行修改。這一塊對于linux主機未過期的密碼進行修改通過直連比較容易實現的。
那么在linux主機密碼已經過期的情況下對linux主機密碼進行重置時,我發現到通過jsch直連linux主機根本行不通。因為這時使用過期密碼直連linux主機相當于密碼錯誤。
接下來我就找一個linux主機用戶密碼過期的例子。
上圖在linux主機上可以看出主機密碼已經過期,那我們通過jsch連一下看看:
如上圖,我們會發現直連不了對應主機。這也相當于通過jdbc的方式連接數據庫時,密碼錯誤一樣。
那我是怎么處理的呢?
我用很簡單的方式:找一個能跳轉的linux主機,注意此跳轉機的用戶密碼不能過期哦。通過jsch直連跳轉機,然后在跳轉機上執行ssh -l username ip 命令,連接到要修改密碼的linux主機用戶,此時通過模擬主機真實場景。在jsch channel中實現與主機的交互實現修改密碼。
執行ssh -l username ip 命令,檢查密碼過期:
執行ssh -l username ip 命令,修改過期密碼:
驗證密碼修改成功。
此處我只修改了一次密碼,重置密碼的邏輯可以通過程序循環多修改幾次實現。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129463.html
摘要:主要是將一個服務集群部署到遠端的服務器上,具體服務器的連接信息會通過接口傳入。本來部署是人工來完成的,無非是將一些必須的文件到目標服務器上,然后遠程登錄,執行一些安裝的操作,齊活。 介紹 前段時間接了一個比較特殊的需求,需要做一個用于部署服務的服務。主要是將一個k8s服務集群部署到遠端的服務器上,具體服務器的連接信息會通過接口傳入。 本來部署是人工來完成的,無非是將一些必須的文件s...
摘要:系統下直接用用戶登錄是比較不安全的,所以我們拿到云主機后的第一件事就應該是創建一個普通用戶,并禁用權限來保障主機安全。創建新用戶并設置登錄密碼。重啟再次通過登錄,已提示限制登錄,使用和新設置的密碼登錄提示登錄成功。linux系統下直接用root用戶登錄是比較不安全的,所以我們拿到云主機后的第一件事就應該是創建一個普通用戶,并禁用root權限來保障主機安全。以下是詳細的操作步驟。創建新用戶并設...
摘要:默認的系統管理員的為,我們添加用戶的時候最好使用以上的,范圍的最好保留給系統用。臨時修改主機名新主機名永久修改主機名文件中修改文件存放的是域名與的對應關系添加一個新主機名到原文地址 安裝 Git 安裝: sudo apt-get install git 安裝 Nginx 安裝: sudo apt-get install nginx 啟動: sudo /etc/init.d/ngi...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20