OJ開發‎ > ‎linux‎ > ‎

兩linux之間的互控

首先要能讓兩PC都能接受對方的指令,讓這自動化像有人在操作指令一般,所以要先為兩台PC(至少受控端)安裝SSH Server

相對的控制端要連進被控端則得安裝 SSH Client (OpenSSH)

A控制端  --> B被控端

在A下指令
ssh [-f] [-o 參數項目] [-p 非正規埠口] [帳號@]IP [指令]
選項與參數:
-f :需要配合後面的 [指令] ,不登入遠端主機直接發送一個指令過去而已;
-o 參數項目:主要的參數項目有:
	ConnectTimeout=秒數 :連線等待的秒數,減少等待的時間
	StrictHostKeyChecking=[yes|no|ask]:預設是 ask,若要讓 public key
           主動加入 known_hosts ,則可以設定為 no 即可。
-p :如果你的 sshd 服務啟動在非正規的埠口 (22),需使用此項目;
[指令] :不登入遠端主機,直接發送指令過去。但與 -f 意義不太相同。
例子
ssh 帳號@IP
然後B會要求你輸入該帳號密碼,當然如果是人工操作自然不是問題,若要自動化就會卡住,此時需要讓兩PC能自動認證
此時A得先產生兩把金鑰(公鑰跟私鑰),將來只要兩把金鑰比對成功則能登入
ssh-keygen -t rsa 或 ssh-keygen -d (dsa) => 產生出 id_rsa, id_rsa.pub
若只下 ssh-keygen 指令則預設以RSA編碼
這兩把金鑰會放在A帳號的家目錄/.ssh目錄下
接下來就是把公鑰交給對方
scp .ssh/id_rsa.pub B帳號@IP:~
這樣B就會收到A的 id_rsa.pub 檔案放在家目錄下
接下來B必須將這檔案內容加入自己.ssh目錄下的authorized_keys檔案內
cat id_rsa.pub >> .ssh/authorized_keys
不管有幾台電腦想控制B,只要讓B將自己的公鑰內容加入B的authorized_keys檔案內即可
測試一下 ssh B帳號@IP 'ls' 是不是免輸入密碼了

##############################################################

同步兩主機目錄
rsync -av 本機目錄/ 遠端帳號@IP:~/目錄/
因為rsync已經支援ssh傳輸,所以只要有給公鑰,自然就不再需要輸入密碼



Comments