在給vmware虛擬機掛載磁盤后再新磁盤目錄里面使用ssh拉取代碼一直報錯:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
manifests:
虛擬機可以添加硬盤,如果添加的是物理磁盤
這種磁盤在掛載時一般會出現權限不一致問題
比如我將這個磁盤掛載在~/v下面,這個V目錄的權限不足需要修改權限777,但就算這樣在v目錄里面執行git下載之類的還是需要帶上sudo?
問題來了,ssh設置的時候僅對當前用戶生效,帶sudo就改變了用戶權限,ssh校驗就對不上了,所以在使用ssh 下載的時候一定不能帶上sudo ,需要先解決sudo權限問題即可
1.?SSH 配置對當前用戶有效
- SSH 配置文件(如?
~/.ssh/config
?和公私密鑰對)存儲在當前用戶的家目錄下。當您以特定用戶身份進行 SSH 連接時,系統會使用該用戶的?~/.ssh
?目錄中的文件進行身份驗證。
2.?切換用戶或使用?sudo
?執行命令
-
切換用戶:如果您切換到另一個用戶(例如使用?
su
?或?sudo su
)并嘗試執行 SSH 連接,新的用戶將不會訪問原用戶的?~/.ssh
?目錄。因此,如果新用戶沒有配置 SSH 密鑰或相關文件,SSH 認證將失敗。 -
使用?
sudo
?執行命令:當您以?sudo
?執行命令時,默認情況下?sudo
?會使用目標用戶(通常是?root
)的?~/.ssh
?配置,而不是當前用戶的配置。這意味著如果?sudo
?執行時沒有正確的 SSH 配置或密鑰對,SSH 連接也會失敗。
3.?如何解決這個問題
如果您希望在使用?sudo
?或切換用戶時仍能使用 SSH,可以采取以下措施:
-
使用?
sudo
?保留用戶的環境:通過?sudo -u <username> <command>
?可以以指定用戶的身份執行命令。例如:sudo -u username ssh user@remote_host
這將使用用戶?
lijilei
?的 SSH 配置。 -
手動配置?
sudo
?使用原用戶的?.ssh
?配置:您可以配置?sudo
?保留用戶的環境變量,這樣在使用?sudo
?時仍然能夠訪問原用戶的 SSH 密鑰。例如,可以在?/etc/sudoers
?文件中添加以下內容:Defaults env_keep += "HOME"
這將允許?
sudo
?保留當前用戶的?HOME
?環境變量,使得?~/.ssh
?目錄中的密鑰和配置文件仍然可用。 -
將 SSH 密鑰復制到其他用戶:如果您需要為多個用戶配置 SSH 密鑰,可以將原用戶的?
~/.ssh/id_rsa
(私鑰)和?~/.ssh/id_rsa.pub
(公鑰)復制到其他用戶的?~/.ssh
?目錄中。