2021-05-12 14:32:11
Linux SSH登入命令總結
當專案計算量比較大,我們需要將任務分布到多台電腦上面執行,因為對於分散式概念不熟,就想到了Linux最簡單的ssh協定,遠端控制其他電腦,然後寫shell指令碼統一在所有電腦上執行程式。
簡單說,SSH是一種網路協定,用於計算機之間的加密登入。
如果一個使用者從本地計算機,使用SSH協定登入另一台遠端計算機,我們就可以認為,這種登入是安全的,即使被中途截獲,密碼也不會洩露。
最早的時候,網際網路通訊都是明文通訊,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協定,將登入資訊全部加密,成為網際網路安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準設定。
需要指出的是,SSH只是一種協定,存在多種實現,既有商業實現,也有開源實現。本文針對的實現是OpenSSH,它是自由軟體,應用非常廣泛。
下面我們以Ubuntu 16.04為例子看看使用ssh有哪些步驟:
1
在電腦中輸入以下命令檢視是否安裝了ssh:
—ps -e | grep ssh
如果返回結果由上圖中的sshd,則說明已經安裝好ssh,否則可以使用下面命令線上安裝:
—sudo apt-get install ssh
2
使用ssh命令登入其他電腦:
—ssh username@ip,
會提示需要輸入密碼,這時候輸入密碼即可遠端控制另一台電腦.
3
ifconfig檢視ip
如果有十台電腦需要你連線,分配任務,這樣做就要每次都記住相應的電腦ip和密碼,不利於我們用指令碼統一執行,因此第一步就是需要將需要遠端控制的電腦免密登入.
4
生成金鑰:
—ssh-keygen
然後一路enter,此時會在主目錄下生成.ssh的資料夾
用下面命令可以進行檢查核對:
—ls -a
此時說明秘鑰對已經生成好了
5
將公鑰通過scp拷貝到你需要連線的電腦上:
—cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
—scp ~/.ssh/id_rsa.pub username@ip:~/.ssh/id_rsa.pub_copy
6
遠端連線上你需要連線作為伺服器的電腦:
—touch ~/.ssh/authorized_keys
—cat ~/.ssh/id_rsa.pub_copy >> ~/.ssh/authorized_keys
7
修改許可權:
—chmod 755 ~
—chmod 700 ~/.ssh
—chmod 600 ~/.ssh/authorized_keys
這裡整個流程就結束了!
這裡很多人不太明白755,700,600這些資料的含義,這個是linux許可權的數位表達方式.給大家說明一下,比如我們在檢視某個檔案的許可權時:
我們會看到上面的結果,前面這一部分是由十位組成,1-3-3-3的方式,第一個字母表示檔案型別,d表示的就是資料夾document的第一個字母,接下來第一個三位表示所有者的許可權,第二個三位是所在組的許可權,第三個三位是其他組的許可權.R--讀,W-寫,X-執行,所以rwx表示當前組可讀可寫可執行.回到上面數位,R同時對應數位4,W對應2,X對應1.現在可以明白755表示所有者是可讀可寫可執行,所在組是可寫可執行,其他組也是可寫可執行.好啦,現在可以測試一下是否可以免密碼登入他人電腦了:
在執行過程中,你可能會遇到這個問題,這是表明ssh-agent在執行,但是沒有找到相應的key,我們通過ssh-add,即可解決,同時也可以通過ssh-add -l來檢視附加的key.
在遠端連線中還是需要輸入使用者名稱和ip,如果你不想輸入使用者名稱,就在最初為所有的電腦建立一個相同的使用者即可.指令碼執行所有程式:
Screen -dm ssh -t username1@ip1 “...” (在引號裡面輸入你想執行的命令即可)
Screen -dm ssh -t username2@ip2 “...”
ps:寫得不好的地方希望大家多多指教.!
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-09/154294.htm
相關文章