ssh拷贝id到底做什么?

ssh拷贝id到底做什么?,ssh,ssh-keys,Ssh,Ssh Keys,ssh copy id命令具体做什么?我已经用过很多次了,效果非常好。但是,当我尝试手动剪切.pub密钥文件并将其粘贴到我的远程授权密钥时,它不起作用 我将剪切并粘贴.pub的authorized_keys文件的内容与随后使用ssh copy id的内容进行了比较,没有发现两者之间的任何差异,包括空格 ssh copy id除了将公钥复制到授权密钥之外还有什么作用吗?这个小命令应该可以工作。每当没有ssh副本id时,我都会使用它,例如,当我在Mac上时 cat ~/.ssh/id_rsa.pub

ssh copy id命令具体做什么?我已经用过很多次了,效果非常好。但是,当我尝试手动剪切.pub密钥文件并将其粘贴到我的远程授权密钥时,它不起作用

我将剪切并粘贴.pub的authorized_keys文件的内容与随后使用ssh copy id的内容进行了比较,没有发现两者之间的任何差异,包括空格


ssh copy id除了将公钥复制到授权密钥之外还有什么作用吗?

这个小命令应该可以工作。每当没有ssh副本id时,我都会使用它,例如,当我在Mac上时

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
cat~/.ssh/id_rsa.pub|ssh@'cat>~/.ssh/authorized_keys'

在我看来,这比手动复制和粘贴要好:在这种情况下,您确切地知道文件中最终会出现什么内容

我通常按照您的描述将粘贴密钥复制到授权密钥中(我忘记了
ssh copy id
),因此它可以工作。请注意,如果要创建文件,则需要
chmod 600~/.ssh/authorized_key

ssh copy id
是一个shell脚本,因此您可以在文本编辑器中打开它来查看它的功能,这看起来像相关的位:

printf '%s\n' "$NEW_IDS" | ssh "$@" "
    umask 077 ;
    mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ;
    if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"

在最后一行中,恢复默认的SELinux安全上下文。我不必运行该程序,但在您的情况下可能需要它。

您是否检查了
授权密钥
的权限设置是否正确?是的,目录和授权密钥的权限都正确。ssh复制id插入到与我的剪切粘贴相同的文件中,因此文件环境相同。我最好奇的是ssh copy id是否还有其他操作可以“激活”远程服务器上的密钥。如果没有,我需要弄清楚剪切和粘贴是如何改变公钥的。也许可以尝试在您的版本和自动版本之间进行
diff
ssh copy id
的手册页没有说明它还做了什么。另外,
ssh copy id
只是一个普通的shell脚本,因此您可以检查它的功能。仅供参考,我创建了一个小脚本,可以一次性运行必要的步骤,还可以确保所有文件/目录权限,这通常会让我头疼…@JacksonPauls你能为你说的这句话提供一个来源:“
chmod 600~/.ssh/authorized_keys
是创建文件所必需的吗”?我在脚本中搜索,没有看到任何类似的代码。我在测试时也遇到了不一致的结果。