虚拟机新挂载磁盘后磁盘无法使用ssh问题-Permission-denied-publickey.
虚拟机新挂载磁盘后磁盘无法使用ssh问题 Permission denied (publickey).
在给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
目录中。