我的同事给我发了一个包含文件的“.ssh”目录。他说我可以把这个目录放在我的用户目录中,然后不用密码就可以连接到 ssh(ssh root@ip)。
我将该目录放在我的主目录中,然后尝试 ssh root@ip,但没有成功。
我是否遗漏了什么?
答案1
这里有两件事。
1) 您的同事向您发送了一个 .ssh 目录(顺便说一句,这个想法很糟糕,但那是另一个问题……)里面有一个名为 authorized_keys 的文件,其中包含一个或多个“SSH 公钥”。他所说的“无密码连接”发生在您连接并提供私钥并且系统在 .ssh/authorized_keys 中识别出匹配的公钥时。如果您没有上述 ssh 私钥,那么这个文件夹基本上是无用的。此密钥需要位于客户端而不是服务器端。查看 .ssh 文件夹内,是否有 id_rsa 文件?如果有,请将其复制到您的客户端并在 Pagent 或 Putty 内加载它。
2) 您说您将其放在主目录中,比如说 /home/Moon。现在您尝试以 root@ip 身份登录。
SSH 将在 /root/.ssh/ 中查找文件,而不是 /home/moon/.ssh/,因为您尝试以 root 身份登录,而不是以 Moon 身份登录。根据您的发行版,您可以登录自己的帐户,然后使用 sudo 或 su 转为 root。为 root 设置无密码密钥非常糟糕。
最后要提醒的是,你的同事给了你一个 .ssh 目录,其中包含一个针对某个未知私钥的 authorized_keys 文件。除非你真的真的真的信任你的同事,这是一个糟糕的主意。如果你的主文件夹有一个 .ssh 目录,其中其他人的公钥在 authorized_keys 文件中,那么他们就可以登录到你的用户,而无需提供你的系统密码。本质上,你的同事可以以你的身份登录,并以你的名义做任何他想做的事情,没有人可以证明不是这样。
如果您想自己做这件事并正确地做,请执行以下操作。
以普通用户身份登录,输入命令
ssh-keygen -t rsa
按照提示,选择所有内容的默认设置(但我建议您输入密钥的密码)。
将您的公钥复制到您的授权密钥文件中,并删除旧内容。
猫〜/ .ssh / id_rsa.pub>〜/ .ssh / authorized_keys
使用 Pagent、Putty、ssh -i 或其他密钥管理器加载/打开 id_rsa 将 ~/.ssh/id_rsa 文件复制到您的客户端计算机。现在 SSH 到 yourusername@ip,您将不需要提示。
答案2
.ssh 目录应该(如果您的同事操作正确)包含一个公钥,您需要将其添加到您的授权密钥文件中。打开终端并输入
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(这可能不是正确的命令,您收到的目录中应该有一个 .pub 文件,而是 cat,无论它叫什么)
您可能还应该向他们建议,发送整个 SSH 目录是一个非常糟糕的主意,因为一方面您现在有了他的私钥。此外,任何先前授权的密钥或已知主机都已被覆盖,他们应该只向您发送 id_rsa.pub 文件。
或者您的 sshd 可能未配置为允许基于密钥的身份验证,请查阅文档以获取有关如何执行此操作的具体说明。
答案3
另一种可能性:根据您提取 .ssh 目录的方式,您可能不拥有您创建的文件(这是大多数 ssh 版本连接的先决条件)。尝试chown -R $USER. ~/.ssh
和chmod -R g-rwx,o-rwx ~/.ssh
。