當項目計算量比較大,我們需要將任務分布到多台電腦上面運行,因為對於分布式概念不熟,就想到了linux最簡單的ssh協議,遠程控制其他電腦,然后寫shell腳本統一在所有電腦上運行程序,下面我們以Ubuntu16.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:寫得不好的地方希望大家多多指教.!