ssh-copy-id 命令简介
ssh-copy-id 是一个用于将本地主机的 SSH 公钥复制到远程主机 authorized_keys 文件中的实用脚本。使用该命令可以方便地配置基于密钥的 SSH 认证,从而无需每次登录都输入密码。
主要功能
- 将本地用户的 SSH 公钥安装到远程主机指定账户的
~/.ssh/authorized_keys文件中。 - 自动为远程主机的用户主目录、
~/.ssh目录以及~/.ssh/authorized_keys文件设置合适的权限(例如,移除群组写入权限),以满足 SSH 服务端严格模式的要求。
基本用法
命令的基本格式如下:
ssh-copy-id [-i [identity_file]] [user@]machine
参数说明
-i [identity_file]:指定要使用的公钥文件。默认情况下,会使用~/.ssh/id_rsa.pub。如果提供了此选项,则优先使用指定的文件,而不会使用 ssh-agent 中的密钥。[user@]machine:指定远程主机的用户名和地址。例如:user@192.168.1.100。
工作原理
ssh-copy-id 本质上是一个脚本,它通过 SSH 连接到远程服务器(首次连接时通常需要输入密码),并执行以下操作:
- 检查本地可用的公钥。它会优先尝试使用
ssh-add -L命令的输出(即 ssh-agent 中管理的密钥)。如果 ssh-agent 没有输出或使用了-i选项,则使用指定的或默认的身份认证文件(如id_rsa.pub)。 - 获取到一个或多个公钥指纹后,通过 SSH 连接将这些公钥内容追加到远程服务器的
~/.ssh/authorized_keys文件中。 - 根据需要,调整远程服务器上相关目录和文件的权限,以确保 SSH 能够正常工作。
使用示例
1. 使用默认公钥文件(~/.ssh/id_rsa.pub)复制到远程主机:
ssh-copy-id user@remote-server.com
2. 指定使用特定的公钥文件:
ssh-copy-id -i ~/.ssh/my_key.pub user@remote-server.com
注意事项
- 首次运行该命令时,远程服务器的 SSH 服务需要启用密码认证(因为需要输入密码进行连接)。成功配置密钥后,建议在 SSH 服务端配置中禁用密码认证以增强安全性。
- 该命令会自动处理权限问题,这对于不熟悉 SSH 目录权限要求的用户非常方便。
- 如需查看所有可用选项和详细说明,可以使用帮助命令:
ssh-copy-id -h。