Ssh
從我的伺服器上的 post-receive git hook 執行一個私有腳本
假設我有以下工作流程來部署我的 webapp 的新版本。這是一個小型應用程序,因此所有建構 + 部署工作都在同一台伺服器上完成 (
example.co
)
- 使用者執行
git push
將新程式碼推送到我的伺服器(example.co
)- 伺服器有一個接收更改的裸 git 儲存庫。它開始了一個
post-receive
鉤子- post-receive 鉤子執行一個建構腳本,該腳本建構一個新的 docker 容器並啟動它
git 儲存庫由
git
我伺服器上的專用使用者管理。這樣任何開發人員都可以添加一個 git 遠端 ssh urlssh://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 之前已經部署的已知安全程式碼”更具破壞性的事情,所以對於某人來說真的不應該有任何不利因素能夠重複觸發腳本,而不是資源耗盡。