利用 SSH 遠端操作其他站台
在上課中老師有教到此法方但在測試過程中不知道為什麼會一直失敗沒有作用,但後來今天利用一點時間找個資料在重新測試一次就成功了,那將過程中都給記錄下來以免日後又忘記了。
操作方式
BUBU 是有啟兩台 Debain 系統虛擬機實作
- 001 站台上先登入使用者帳號並且產 ssh 的 key
ssh-keygen
- 001 站台所產出來的 ssh key 再傳送到 002 站台,這樣子在做遠端連線時就不需要在 key 密碼只要靠 ssh key 來互相溝通。
ssh-copy-id user@002IP
- 從 001 站台用 ssh 方式連線到 002 站台看是否還有需要 key 密碼,正常來說是不用才的因為是有 ssh key 的關係
ssh user@002IP
-
由於您在 002 站台時候要用某些操作的話都需要有 sudo 權限。
-
001 站台遠端操作時可以利用一行的指令就可以操作 002 站台做操作,現在要解決需要 key 密碼的問題,我們可以在
/etc/sudoers.d
此目錄增加免輸入密碼清單
echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/user
-
增加完之後請先把 001 站台先退出系統後在重新登入一次。
-
那來試試看是否可以遠端操作 002 站台指令,這樣子可以看到正在執行檢查更新了。
# 方式一
ssh user@002IP sudo apt update
# 方式二 用雙引號包起來
ssh user@002IP "sudo apt update"
- 已有跟社群上做一些問題詢問,有建議還可以利用清單方式來執行一些指令
# 方式三
cat 腳本 | ssh user@002IP bash or sh
# 方式四
ssh user@002IP bash < 腳本
- 群友說明及圖片
# 如果有這樣的擔憂, 或許換成另一個方法, 利用 cat 將指令完整的傳送到遠端再執行︰
cat | ssh user@IP "cat|sh"
sudo apt update
[按下 Ctrl + d]
# 或是說將指令都放在一個檔案︰
cat command_file | ssh user@IP "cat|sh"