博客 / Others/ ssh-copy-id命令使用方法

ssh-copy-id命令使用方法

ssh-copy-id命令使用方法

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 连接到远程服务器(首次连接时通常需要输入密码),并执行以下操作:

  1. 检查本地可用的公钥。它会优先尝试使用 ssh-add -L 命令的输出(即 ssh-agent 中管理的密钥)。如果 ssh-agent 没有输出或使用了 -i 选项,则使用指定的或默认的身份认证文件(如 id_rsa.pub)。
  2. 获取到一个或多个公钥指纹后,通过 SSH 连接将这些公钥内容追加到远程服务器的 ~/.ssh/authorized_keys 文件中。
  3. 根据需要,调整远程服务器上相关目录和文件的权限,以确保 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

发表评论

您的邮箱不会公开。必填项已用 * 标注。