因為項目計算量比較大,需要將任務分佈到多臺電腦上面運行,因為對於分散式概念不熟,就想到了linux最簡單的ssh協議,遠程式控制制其他電腦,然後寫shell腳本統一在所有電腦上運行程式.(我的操作系統為Ubuntu16.04) 首先在各自電腦上面輸入以下命令查看是否安裝了ssh ps -e | grep ...
因為項目計算量比較大,需要將任務分佈到多臺電腦上面運行,因為對於分散式概念不熟,就想到了linux最簡單的ssh協議,遠程式控制制其他電腦,然後寫shell腳本統一在所有電腦上運行程式.(我的操作系統為Ubuntu16.04)
首先在各自電腦上面輸入以下命令查看是否安裝了ssh
ps -e | grep ssh
如果返回結果由上圖中的sshd,則說明已經安裝好ssh,否則線安裝.
sudo apt-get install ssh 安裝即可.
接下來我們使用ssh登錄其他電腦的時候,ssh username@ip登錄,會提示需要輸入密碼.這時候輸入密碼即可遠程式控制制另一臺電腦.
(ifconfig查看ip)
如果有十臺電腦需要你連接,分配任務,這樣做就要每次都記住相應的電腦ip和密碼,不利於我們用腳本統一運行,因此第一步就是需要將需要遠程式控制制的電腦免密登錄.
首先我們在你自己的電腦上面生成密鑰.
ssh-keygen,然後一路enter,此時會在主目錄下生成.ssh的文件夾
ls -a (查看是否生成.ssh文件夾)
進入.ssh文件夾,查看文件
此時說明秘鑰對已經生成好了.接下來將公鑰通過scp拷貝到你需要連接的電腦上.
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub username@ip:~/.ssh/id_rsa.pub_copy
接下來遠程連接上你需要連接作為伺服器的電腦
touch ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub_copy >> ~/.ssh/authorized_keys
這時候就到了最後一步,修改許可權
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:寫得不好的地方希望大家多多指教.