1. linux-兩種ssh遠程執行命令方式載入環境變數區別
最近在編寫腳本的時候發現一個問題,在執行 kubectl -n kube-system get pods 這個命令的時候,通過 ssh root@ip command 和 ssh root@ip command 登錄後執行得到了不同的結果,
從上面可以看到哪賀SSH遠程執行獲取pods失敗了,但是shell窗口執行卻成功了,所以我們可以猜到兩者之間一定有什麼區別導致結果的不同。那麼區別在哪裡呢?通過研究發現兩者的環境變數存在區別,通過執行printenv可以查看所有設置的環境變數:
通過上面可以看到SSH遠程執行的時候是沒有KUBECONFIG這個環境變數,而Shell窗口是有的,為什麼有這個區別呢?這就要從Linux的bash的四種模式說起。
bash的四種模式:
從上面可以看出不同方式下載入的配置文件不同,那麼怎麼知道我們是載入了那些配置文襪凱件呢? 這里有一個驗證的方法,就是在上面的每個配置告緩喚文件中添加一句 echo $/etc/profile 這樣的命令,把每個文件的路徑列印出來。當配置文件被載入時,會輸出相應的文件名,本例中在兩個文件中加了該命令:/etc/pfoile, ~/.bashrc,然後使用不同SSH方式執行命令的結果如下。
只載入了.bashrc文件,未載入/etc/profile。
從輸出可以看到兩個配置都載入了,而KUBECONFIG只定義在/etc/profile中,沒有定義在.bashrc文件中,所以通過 ssh root@ip command 執行時沒有拿到KUBECONFIG這個環境變數從而導致報錯。知道原因後我們就可以將KUBECONFIG環境變數添加到.bashrc文件即可。
2. 在linux-ubuntu系統中怎麼訪問區域網中到電腦
linux 之間互訪,無需其他的輔助工具了,linux里默認安裝的ssh便可以實現訪問區域網間的linux系統,需要把ssh開啟,命令:service sshd start ; ssh訪問命令: ssh IP 根據提示輸入用戶名和密碼,直接可以登錄了(前提是兩端都開啟了ssh,並且防火牆沒有關閉ssh),另外也可以用telnet,但由於它存在安全問題一般telnet默認關閉的,開啟需要做配置,在此不做推薦。
linux 訪問windows,推薦一款軟體,rdesktop。安裝了這個軟體便可訪問windows了。
3. ssh命令如何使用
ssh命令用於伺服器的遠程式控制制,一般情況下只要用「ssh IP地址」這樣的格式就可以了,例如:「ssh 192.168.10.10」,可參考:第9章 使用ssh服務管理遠程主機。
4. linux之ssh命令詳解
ssh是什麼呢? 👉網路上是這么說的
簡單來說,在linux中SSH是非常常用的工具,通過SSH客戶端我們可以連接到運行了SSH伺服器的遠程機器上,也就是說,我們可以通過ssh來遠程式控制制我們的電腦或者伺服器。那麼ssh協議的優點就是數據傳輸是加密的,可以防止信息泄露,而且數據傳輸是壓縮的,可以提高傳輸速度。
它的命令格式是👉 ssh [-p port] user@remote
user 是在遠程機器上的用戶名,如果不指定的話默認為當前用戶
remote 是遠程機器的地址,可以是IP/域名,或者是別名
port 是SSH Server監聽的埠,如果不指定,就為默認值22
(使用exit退出當前用戶的登錄)
有關SSH配置信息都保存在用戶家目錄下的.ssh目錄下
接下來,我們就來實際演示一下ssh命令的使用
首先我們需要兩台linux系統的電腦來進行演示,所以我用虛擬機安裝了兩個linux的系統,分別命名為Deepin1和Deepin2(不得不說deepin真的是即好看又好用😄)
不過deepin操作系統默認ssh是沒有開啟的,我們需要手動將它開啟。
第一步,在終端輸入sudo apt-get install ssh安裝ssh服務
第二步,在終端中輸入sudo service ssh start開啟ssh服務
注意:deepin1和deepin2都要執行上面兩步來安裝和開啟ssh服務
安裝並打開ssh之後,我們使用Deepin1來遠程連接Deepin2,那麼我們需要知道Deepin2的ip地址,在終端中輸入ifconfig就可以知道當前機器的ip地址了,或者也可以直接把滑鼠放到網路連接上,會直接顯示出來。我這里Deepin2的IP地址為:192.168.56.132
然後,我們在Deepin1的終端中輸入ssh -p 22 [email protected]然後回車
這里 -p 22 可以省略,22表示ssh的埠號為22, deepin2 為Deepin2的用戶名, 192.168.56.132 為Deepin2的ip地址。
第一次連接,會彈出來是否連接的確認信息,我們輸入yes確認,然後輸入deepin2的密碼並回車。出現如下界面就表示連接成功了。
連接成功後,我們嘗試輸入 cd Desktop/ 切換到桌面目錄,然後輸入 touch 123.txt 在桌面下創建123.txt文件
我們再切換到Deepin2系統中,發現桌面上的確出現了一個新的文件123.txt,大功告成!
到這里ssh的基本操作其實已經演示完了,但是我們發現每次遠程登陸的時候都需要重新輸入密碼,稍微有點麻煩,其實我們可以通過設置,進行免密碼登錄。
免密登錄:
第一步,配置公鑰。在Deepin1終端中執行ssh-keygen即可生成SSH鑰匙,一路回車即可。
第二步,上傳公鑰到伺服器。在Deepin1終端中執行ssh--id -p port user@remotr(ssh--id -p 22 [email protected])可以讓遠程伺服器記住我們。
第三步,設置完成了,試一下是否能免密登錄呢?
可以看到,當我們遠程登陸deepin2時,並沒有輸入用戶密碼就登陸成功了!其實挺簡單的不是嗎?