Linux

有沒有更簡單的方法為新使用者添加公鑰認證?

  • December 7, 2017

我正處於使用 Ubuntu 12.04 在新的 Web LEMP 伺服器上設置安全使用者的艱鉅和痛苦的過程中。我最初打算設置類似 vsftpd 或 proftpd 的東西,但許多人建議直接使用 SFTP,所以我會這樣做。最終,我有一個主要使用者(我只是用來防止 root 登錄)。我創建了這個新使用者,生成了一個公鑰對,將公鑰上傳到使用者~/.ssh目錄authorized_key,更改了 SSH 埠號,刪除了 root 登錄並設置passwordauthentication為 NO,因此使用者被迫使用他/她的密鑰登錄很容易(儘管在 PC 上工作似乎比我的 OSX/NIX 同行更令人頭疼)。

我現在正在嘗試創建新使用者(對於我的 Web 開發人員),這些使用者將只具有 SFTP 訪問權限,並將他們的暴露限制在他們負責的 Web 目錄中。每個目錄具有以下格式:

/var/www/sitename.com/public/

我的頭痛現在開始了。創建一個新使用者?簡單的。添加密碼?真的不需要,因為我需要公鑰/私鑰(他們永遠不會有 sudo 訪問權限),但是可以。然而,我正在努力解決以下問題:

  • 我如何在伺服器上實際儲存這個新使用者的公鑰?如果我以 root 使用者身份登錄並簡單地authorized_keys在他們的主目錄中創建文件,它將具有 root 所有者和組權限,並且他們無法登錄到伺服器。同樣,這些新使用者不能自己登錄和創建,嗯,呃,因為他們不允許通過密碼登錄。

(注意:我也在努力設置 sftp 並將它們限制在各自的 Web 目錄中,但我想我以後可以自己解決)。

有什麼建議嗎?

編輯

目前流程是這樣的:

  • 從個人那裡獲取公鑰
  • 執行以下命令:
#sudo mkdir -p /home/newuser/.ssh
#sudo nano /home/newuser/.ssh/authorized_key
#(將密鑰複製到單行並保存)
#chown -R 新使用者:新使用者/家/新使用者
#chmod 700 /home/newuser/.ssh
#chmod 600 /home/newuser/.ssh/authorized_key

我想這不是絕對可怕的,但如果我們有大量的開發人員(加上我將要花費我設置 SFTP 部分和限制目錄的時間),這似乎是一個巨大的痛苦。

您需要更改文件的所有權並適當地設置權限。

$ chown -R newuser /path/to/home/.ssh
$ chmod 700 /path/to/home/.ssh
$ chmod 600 /path/to/home/.ssh/authorized_keys

要使此過程更簡單、可重複和可審核,請使用配置管理系統進行使用者管理。所有廣泛使用的配置管理系統(puppet、chef、ansible 等)都具有創建使用者和部署密鑰的能力。使用配置管理系統的一個巨大額外好處是,您還可以將配置保存在原始碼管理中。

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