该程序ssh-copy-id
实际上在幕后做了什么?能否像向对计算机科学有深入了解的孩子一样解释这些步骤?
它是否使用 SSH 规范中已有的协议,或者是否使用“欺骗”来复制密钥(例如尝试在目标系统上运行 shell 命令,就好像它是用户一样)? “目标”SSH 服务器是否需要ssh-copy-id
事先了解并进行编码来处理它,或者它是否可以在任何操作系统上的任何 SSH 实现上工作?
答案1
ssh 复制 ID是一个脚本,而不是 C 程序,通常用 POSIX shell 编写。您可以检查:
$ file "$(command -v ssh-copy-id)"
/usr/bin/ssh-copy-id: POSIX shell script, ASCII text executable
您可以阅读其内容以了解更多详细信息。
一般来说,它会做类似的事情:
- 对参数进行一些检查,
ssh-agent
以获取身份文件。 - 使用 ssh 登录远程主机,进行一些设置,将公钥复制到主机然后退出。