有两台Linux机器,即A和B。在A上运行的脚本需要能够通过SSH进入B。因此A生成了一个公钥(可能是ssh-keygen生成的id_rsa.pub),然后使用了它们各自的私钥(再次,可能是id_rsa)建立该SSH连接。
如果我上面所说的任何话不正确或被误导,请先纠正我!
假设我或多或少地达到了目标:
是的
但B需要A的公钥在B的authorized_keys文件中列出,以便A能够连接到B
您也可以删除id_rsa.pub和ssh到B,它仍然可以工作,因为公钥是通过每个ssh连接重新生成的,并且不存储在任何id_rsa.pub中
A如何“给” B公钥(id_rsa.pub)?这必须是手动过程,还是可以自动化?如果是手动操作,将如何进行?如果是自动化的,命令是什么?
手册 -类似
来自A-
cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
甚至更多手动操作,以分解命令
澳元 cat id_rsa.pub | ssh user@host 'cat>~/a.a'
然后在B上,确保〜/ .ssh存在,然后执行 cat a.a >> ~/.ssh/authorized_keys
并且可以在B之前和之后添加B的authorized_keys,以确保列出了该密钥。
或者您可以通过电子邮件将id_rsa.pub发送到一个电子邮件帐户,然后B可以从B检查电子邮件并将id_rsa.pub的内容附加到他的authorized_keys文件中
自动地
ssh-copy-id命令
您需要能够ssh进入,因此您需要密码访问权限
而不是ssh user @ host,而是执行ssh-copy-id user @ host,并提示您输入密码,然后输入密码并进入,它将复制公钥。下次您使用ssh user @ host时,它将使用密钥。
当B“获取”此公共密钥时,它将去哪里或将其存储在哪里?
B的〜/ .ssh / authorized_keys
启动到B的SSH连接时,A如何“使用”其私钥(id_rsa)作为该连接的一部分?
好吧,我对此并不十分了解,但是用一个密钥加密的任何东西都可以用另一个密钥解密,并且识别自己与发送数据有点不同..可能有些东西关于一个临时密钥。