![删除了我的主文件夹,现在我无法通过 SSH 进行远程连接](https://linux22.com/image/778149/%E5%88%A0%E9%99%A4%E4%BA%86%E6%88%91%E7%9A%84%E4%B8%BB%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E7%8E%B0%E5%9C%A8%E6%88%91%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9B%E8%A1%8C%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5.png)
我意外地删除了主目录sudo rm -r ~
,当我尝试重新连接 ssh 时返回
ssh -v key.pem ec2-user@PublicIP-address
ec2-user@PublicIP-address: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
我仔细检查了所有内容,正确的 IP 和正确的密钥。
我也尝试过清除我的ssh-key -D
我也尝试过制作自己的 ssh-keygen 并添加到 ssh-add 中我也尝试过重新启动我的远程计算机所有这些都导致相同的结果
我仍然可以通过 amazon web 控制台连接实例,但是我将无法再执行诸如 之类的命令,而scp
这些命令对于管理我的网站至关重要。此时我注意到 Ec2 控制台显示[~bash4.2]
在命令行输入中。
接下来我尝试通过以下方式重新创建主文件夹:
sudo mkdir /home/user
cp -rT /etc/skel/ "$HOME"
chown -R ec2-user:ec2-user /home/ec2-user
重新启动实例并重试
我仍然收到相同的权限被拒绝错误,但现在 Ec2 控制台显示
[ec2-user@PrivateIPaddress]
在命令行输入中,这表明我做对了。我怀疑这可能与手动创建的 HOME 目录导致的权限冲突有关
但我来这里的原因显然是因为我被难住了,我可以看到相关的问题,但从来没有找到这个特定问题的答案,所以我在寻求帮助。谢谢
答案1
当您登录 EC2 实例并执行“sudo rm”命令时,您删除了登录用户的主目录。在本例中,该用户是 ec2-user
由于您可以通过 Web 控制台访问 EC2 控制台,因此您需要重新创建主目录
mkdir -p /home/ec2-user/.ssh
您现在有了主目录 - 但您没有 ~/.ssh/authorized_keys 文件中 ec2 用户的公钥
如果您拥有使用实例创建的私钥/公钥对,则可以使用它,但假设所有内容都丢失了,请在家用计算机上创建一个新的密钥对(ssh-keygen -t rsa -b 2048)并将 id_rsa.pub 文件的内容复制到 EC2 实例(/home/ec2-user/.ssh/authorized_keys)
确保.ssh 目录的权限受到限制
chmod 0700 /home/ec2-user/.ssh
chown -R ec2-user:ec2-user /home/ec2-user
现在你应该能够从外部机器通过 ssh 连接到你的 EC2 主机了
答案2
问题是,删除主目录也会删除.ssh
用于 ssh 连接的公钥所在的目录。因此,您应该创建此目录:
mkdir ~/.ssh
chmod 700 ~/.ssh
并复制你的公钥(来自备份):
cat public_key_backup >>~/.ssh/authorized_keys
答案3
将所有用户默认文件从 /etc/skel 复制到用户主目录。
sudo cp -r /etc/skel/* /home/home_dir
然后更改权限。
chown -R username:username home_dir