
我需要配置一台機器,以便可以透過 SSH 遠端自動安裝軟體。下列的維基百科,我能夠設定 SSH 金鑰,以便我的用戶無需密碼即可存取計算機,但在使用時我仍然需要手動輸入密碼sudo
,這顯然是自動化過程不需要做的。
雖然我/etc/ssh/sshd_config
有PermitRootLogin yes
,但我似乎無法以 root 身份登錄,大概是因為它不是具有單獨密碼的「真實」帳戶。
如何配置 SSH 金鑰,以便進程可以在 Ubuntu 上以 root 身份遠端登入?
答案1
第 1 部分:無密碼的 SSH 金鑰
要為 root 使用者設定無密碼 SSH 連接,您需要在伺服器上具有 root 存取權限。最簡單的方法是暫時地允許 root 透過密碼透過 ssh 登入。不管怎樣,您需要伺服器上的 root 存取權限才能執行此操作。如果您沒有伺服器的 root 存取權限,請聯絡伺服器管理員尋求協助。
在客戶端(您透過 ssh 登入的地方)
首先製作一個沒有密碼的 ssh 金鑰。我強烈建議您給它一個名稱,而不是使用預設名稱
ssh-keygen -f foo
-f 選項指定檔名,例如 foo ,使用您想要的任何名稱。
當系統提示您輸入密碼時,只需按 Enter 鍵,您將產生一個沒有密碼的金鑰。
接下來您需要將金鑰傳輸到伺服器。最簡單的方法是使用ssh-copy-id
.為此,您必須暫時允許 root 透過 ssh 存取伺服器。
在伺服器上(您透過 ssh 連線的地方)
編輯/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
確保允許 root 使用以下語法登入
PasswordAuthentication yes
PermitRootLogin yes
重新啟動伺服器
sudo service ssh restart
設定 root 密碼,使用強密碼
sudo passwd
在客戶端:
從客戶端,將金鑰傳輸到伺服器
ssh-copy-id -i ~/.ssh/foo root@server
將“foo”更改為您的金鑰名稱,並在詢問時輸入您的伺服器根密碼。
測試密鑰
ssh -i ~/.ssh/foo root@server
假設它有效,請取消設定 root 密碼並停用密碼登入。
在伺服器上:
sudo passwd -l root
編輯/etc/ssh/sshd_config
sudo nano `/etc/ssh/sshd_config`
更改以下內容:
PasswordAuthentication no
PermitRootLogin without-password
重新啟動伺服器
sudo service ssh restart
在客戶端(測試):
現在您應該能夠使用密鑰無需密碼進行 ssh 登錄,並且您不應該能夠以任何沒有密鑰的用戶身份進行 ssh 登錄。
ssh -i ~/.ssh/foo root@server
第 2 部分:透過 sudo 運行命令而無需輸入密碼
您將 sudo 配置為允許您無需密碼即可運行命令。
這個問題在兩個地方都得到了答案:
在這兩者中,我建議允許盡可能少的命令(第一個答案)而不是所有命令(第二個答案)。
答案2
您混淆了兩件不同的事情:
無密碼日誌用於確保人們無法透過猜測您的密碼來遠端登入您的系統。如果您可以 ssh username@machine 並且無需密碼即可連接,則說明設定正確,與此無關。
sudo
用於允許普通使用者帳戶以超級使用者權限執行某些操作。這做要求用戶輸入密碼。無論您是遠端連線(透過無密碼或受密碼保護的 SSH)還是在本機上,都會發生這種情況。您正在嘗試設定sudo
為不詢問您的密碼,這是不建議的,但您可以透過以下答案了解如何做到這一點https://askubuntu.com/a/74083/6161
請注意此答案的未來讀者:
我的上述答案並沒有回答原始發文者的實際問題,它描述了您的內容應該而是做。如果你真的想要允許直接遠端連線到 root 帳戶,您需要啟用 root 帳戶(請參閱下面我的評論)。再說一遍不要允許遠端登入您的 root 帳號。
答案3
Q:使用無密碼 SSH 以 root 使用者身分登入遠端主機(例如 ssh root@remotehost_ip)
A. 若要使用無密碼 SSH 以 root 使用者身分登入遠端主機,請依照下列步驟操作。
第一步:
首先,您必須與遠端主機root 使用者的authorized_keys 檔案共用本機使用者的公鑰。有很多方法可以做到這一點,這裡有一個例子。
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
或者您可以簡單地將公鑰內容複製並貼上到遠端主機 root 使用者的authorized_keys 檔案中。
第二步:
設定 ssh 以允許在遠端主機中進行無密碼登入。登入遠端主機並編輯 /etc/ssh/sshd_config 文件,然後重新啟動 ssh 服務。不要忘記註解掉“PermitRootLogin yes”。
#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no
#service ssh restart
註解掉 #PermitRootLogin yes
第三步:
使用之前共享公鑰的使用者測試本機電腦的連線。
$ssh root@remotehost_ip
答案4
PermitRootLogin 控制是否允許名為「root」的使用者(確切地說:任何 UID 為 0 的使用者)登入。如果您以 root 身分登錄,則無需sudo
執行特權任務。
另一方面,如果您要登入使用者帳戶並在sudo
沒有密碼的情況下使用,則必須配置 sudoers 文件,而不必擺弄/etc/ssh/sshd_config
.看如何讓Ubuntu在第一次使用後永遠記住密碼