Ssh

從我的伺服器上的 post-receive git hook 執行一個私有腳本

  • October 3, 2019

假設我有以下工作流程來部署我的 webapp 的新版本。這是一個小型應用程序,因此所有建構 + 部署工作都在同一台伺服器上完成 ( example.co)

  • 使用者執行git push將新程式碼推送到我的伺服器(example.co
  • 伺服器有一個接收更改的裸 git 儲存庫。它開始了一個post-receive鉤子
  • post-receive 鉤子執行一個建構腳本,該腳本建構一個新的 docker 容器並啟動它

git 儲存庫由git我伺服器上的專用使用者管理。這樣任何開發人員都可以添加一個 git 遠端 ssh url ssh://git@example.co:/some/path.git,並使用 SSH 推送到它

建構和部署工作由deploy使用者完成,因為這需要sudo許可。

如何讓我git的使用者以使用者身份啟動腳本deploy?git 使用者是否應該有任何方法來做到這一點,因為任何人都可以在git使用者權限下通過 ssh 進入機器?

有沒有更好的方法來分割這些權限?

謝謝!

您授予git使用者執行您希望它以使用者身份執行的腳本的deploy權限:

git ALL=(deploy) NOPASSWD: /usr/local/bin/some-script ""

git 使用者是否應該有任何方法來做到這一點,因為任何人都可以 ssh 進入 git 使用者下的機器,對嗎?

好吧,對於初學者來說,希望不是任何人都可以登錄機器,只有有合法需要訪問該帳戶的人才能登錄。其次,SSH作為git使用者應該觸發強制命令,所以登錄的人不應該能夠任意觸發部署腳本。最後,被呼叫的腳本應該以這樣的方式編寫,它不能做任何比“redpeloy 之前已經部署的已知安全程式碼”更具破壞性的事情,所以對於某人來說真的不應該有任何不利因素能夠重複觸發腳本,而不是資源耗盡。

引用自:https://serverfault.com/questions/986568