欢迎各位兄弟 发布技术文章
这里的技术是共享的
私钥相当于钥匙 公钥相当于锁

ssh-copy-id 是一个用于自动化地将 SSH 公钥复制到远程服务器上的 ~/.ssh/authorized_keys 文件的脚本。这个命令大大简化了 SSH 免密码登录的设置过程,使得用户无需每次连接远程服务器时都输入密码。下面是对 ssh-copy-id 命令的详细解释:
bash复制代码ssh-copy-id [-i [identity_file]] [user@]hostname
-i [identity_file]:可选参数,用于指定 SSH 私钥文件的路径。如果不指定,ssh-copy-id 会尝试使用默认的 SSH 私钥文件,通常位于 ~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/id_ecdsa 或 ~/.ssh/id_ed25519。
[user@]hostname:指定远程服务器的用户名和主机名。如果省略用户名,则使用当前用户的用户名。
验证私钥:首先,ssh-copy-id 会检查指定的私钥文件是否存在且有效。
尝试连接远程服务器:使用 SSH 协议(默认端口 22,但可以通过 SSH 客户端的 -p 参数指定其他端口)尝试连接到远程服务器。如果连接成功,ssh-copy-id 会继续执行;如果连接失败(例如,因为需要密码或密钥认证失败),则命令会失败。
检查 ~/.ssh/authorized_keys 文件:如果远程服务器上已存在 ~/.ssh/authorized_keys 文件,ssh-copy-id 会检查文件中是否已经包含了要添加的公钥。如果已包含,则命令会提前结束,避免重复添加。
添加公钥:如果公钥尚未添加到 ~/.ssh/authorized_keys 文件中,ssh-copy-id 会通过 SSH 连接将公钥追加到该文件的末尾。
设置权限:为了安全起见,ssh-copy-id 会检查远程服务器上的 ~/.ssh 目录和 ~/.ssh/authorized_keys 文件的权限设置,并尝试将它们设置为安全的默认值(通常是 ~/.ssh 目录的权限为 700,~/.ssh/authorized_keys 文件的权限为 600)。
使用 ssh-copy-id 时,需要确保你有足够的权限在远程服务器上修改 ~/.ssh/authorized_keys 文件。
如果远程服务器的 SSH 服务配置为不允许使用公钥认证,ssh-copy-id 将无法工作。
ssh-copy-id 只会添加公钥到 ~/.ssh/authorized_keys 文件中,而不会删除或修改文件中已存在的其他公钥。
在使用 ssh-copy-id 之前,请确保你的 SSH 私钥是安全的,并且不要将私钥文件存储在公共或不受信任的地方。
ssh-copy-id 是一个非常方便的工具,用于自动化地设置 SSH 免密码登录。通过减少密码的使用,它提高了安全性和便利性,使得远程服务器管理变得更加轻松。
ssh-copy-i
证而非密码认证来进行身份验证。
bash深色版本1 ssh-copy-id [options] user@host
-i keyfile: 指定要使用的公钥文件。如果不指定,默认使用 $HOME/.ssh/id_rsa.pub 或 $HOME/.ssh/id_dsa.pub。
-n: 如果指定了此选项,则不会打印出成功消息。
-f: 强制覆盖已存在的公钥文件。
-o ssh_options: 传递额外的 SSH 选项给 ssh 命令。
-p port: 指定 SSH 服务使用的端口。
-q: 安静模式,不输出任何信息。
-t: 指定公钥被添加到 .ssh/authorized_keys 文件后的位置。
-v: 显示详细信息。
复制默认的公钥到远程主机:
bash深色版本1 ssh-copy-id user@example.com
这条命令会尝试从你的本地 .ssh/id_rsa.pub 或 .ssh/id_dsa.pub 文件中复制公钥到 example.com 主机上的 user 用户账户。
指定公钥文件:
bash深色版本1 ssh-copy-id -i ~/.ssh/my_key.pub user@example.com
这条命令会使用 ~/.ssh/my_key.pub 文件中的公钥。
指定 SSH 端口:
bash深色版本1 ssh-copy-id -p 2222 user@example.com
如果远程主机使用非标准端口(如 2222),可以使用 -p 选项指定。
强制覆盖远程主机上的公钥文件:
bash深色版本1 ssh-copy-id -f user@example.com
如果远程主机的 .ssh/authorized_keys 文件中已经有该用户的公钥,使用 -f 选项将会覆盖原有的公钥。
安静模式:
bash深色版本1 ssh-copy-id -q user@example.com
这条命令不会输出任何信息,即使成功也不会显示消息。
使用额外的 SSH 选项:
bash深色版本1 ssh-copy-id -o StrictHostKeyChecking=no user@example.com
这条命令会在连接时跳过主机密钥检查。
指定公钥在远程主机上的位置:
bash深色版本1 ssh-copy-id -t command user@example.com
可以使用 -t 选项指定公钥应该被添加到哪个位置,通常不需要使用此选项。
ssh-copy-id 命令的工作流程如下:
读取本地的公钥文件。
使用 ssh 命令连接到远程主机。
将公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中。
如果文件不存在,则创建它。
设置适当的权限以确保安全性。
确保远程主机上存在用户账户,并且该账户有家目录和 .ssh 目录。
如果远程主机上 .ssh 目录或 authorized_keys 文件的权限设置不正确,可能会导致无法正确添加公钥。
为了安全起见,通常建议使用强密码保护私钥文件。
使用 ssh-copy-id 可以大大简化 SSH 密钥管理和无密码登录的过程,提高工作效率的同时也增强了安全性。