对于 CTF 挑战设计竞赛,我正在寻找一种方法来仅使用服务器的 ssh 私钥来连接到服务器,我尝试了不同的方法让参与者通过使用服务器的 ssh 私钥来连接到服务器,但每次我尝试连接时都会提示我输入密码,非常感谢您帮助我解决这个问题。
我一直使用以下命令连接到 ssh 服务器:
ssh -i server_privatekey @<服务器 ip>
答案1
在服务器上,在 ~/.ssh 文件夹中生成一对密钥,例如 id_rsa 和 id_rsa.pub ,在整个挑战过程中,参与者将从服务器读取 id_rsa 文件,现在我希望他们能够使用此私钥文件通过 ssh 连接到服务器,而无需输入密码
与任何其他 SSH 密钥对的使用一样,公钥(即 id_rsa.pub 的内容)必须被添加到该帐户的服务器~/.ssh/authorized_keys
文件中(或者可能是添加到服务器上配置为 AuthorizedKeysFile 的其他文件中)。
也就是说,在这种情况下,不存在“服务器的 ssh 私钥”这样的东西。没关系在哪里密钥已生成 – 在服务器上生成并不会使其变得特殊;它仍然需要以某种方式在authorized_keys文件中列出。
答案2
你可能正在寻找 从私钥创建 SSH 公钥?
接受的答案是这样的:
对 ssh-keygen 使用 -y 选项:
ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub
从'man ssh-keygen'
-y This option will read a private OpenSSH format file and print an OpenSSH public key to stdout.
使用 -f 选项指定私钥,您的私钥可能是 dsa 而不是 rsa。您的私钥名称可能包含您使用的私钥。新生成的公钥应该与您之前生成的公钥相同。