这与公钥授权无关,我知道如何以这种方式复制公钥和 ssh。这是关于私钥的。
所以我刚刚创建了 2 个虚拟机,它们通过 vagrant 专用网络连接。其中一个称为 server01,另一个称为 server02。
我在“server01”上创建了用户“01”,在“server02”上创建了用户“02”。
我ssh-keygen
对他们两个都有,所以他们都有id_rsa
和id_rsa.pub
。
我将 01 的内容id_rsa
(私钥)复制到01key
02 机器中名为的文件中。
然后我使用以下命令从 02 ssh 到 01: 它要求我输入密码......ssh -i 01key [email protected]
为什么?使用私钥连接的全部意义不就是不使用密码吗?我在 AWS 上创建了一个 Linux 服务器,它为我提供了该特定实例的私钥,并且我ssh -I key
无需询问密码就可以进入它,那么我做错了什么?
我检查了01key文件的权限,它们是600。
编辑:所有答案都是无关紧要的。我知道如何使用公钥通过 ssh 连接,但这不是我想要的。
我在 AWS 上创建了一个 Linux 实例并创建了一个 ssh 密钥对,然后它只给了我私钥,我可以用它来连接到该 AWS 实例。我就是这个意思。
答案1
我将 01 的 id_rsa(私钥)的内容复制到 02 机器上名为 01key 的文件中。
公钥身份验证不是这样工作的。您必须复制 user01 的民众关键
~user01/.ssh/authorized_keys
在服务器02上。通过以下命令可以更轻松地完成此操作:
ssh-copy-id user01@server02
然后我从 02 ssh 到 01 ...
恰恰相反,通过这个设置你可以 ssh从server01 到 server02 无密码。
...使用以下命令:ssh -I 01key[电子邮件受保护]
该-I
标志指定 PKCS#11 共享库。您可能想-i
指定身份。无论如何,这是没有必要的;做就是了
ssh user01@server02
答案2
要将公钥复制到服务器,请使用:
ssh-copy-id user2@server
它将复制(在当前服务器上):
/home/user1/.ssh/id_rsa.pub
进入文件(在指定服务器上):
/home/user2/.ssh/authorized_keys
这也可以通过附加公钥来手动完成:
cat /home/user1/.ssh/id_pub.rsa | ssh user2@server "cat >> /home/user2/.ssh/authorized_keys"
cat /home/user1/.ssh/id_pub.rsa
通过管道传输 user1 公钥的内容ssh user2@server "[cmd]"
以user2在指定服务器上执行指定命令cat >> /home/user2/.ssh/authorized_keys
获取管道数据并附加到文件
答案3
您不应该复制私钥。这是id_rsa.pub
你想要的,通常你会把它放进去~02/.ssh/authorized_keys
。