3 步使用 ssh-keygen 和 ssh-copy-id 执行无密码 SSH 登录
如本文所述,我们可以使用 ssky-keygen
和 ssh-copy-id
通过 3 个简单的步骤登录到远程 Linux 服务器而无需输入密码。
ssh-keygen
创建公钥和私钥。 ssh-copy-id
将本地主机的公钥复制到远程主机的 authorized_keys 文件中。 ssh-copy-id
还为远程主机的 home、**/.ssh** 和 **/.ssh/authorized_keys** 分配了适当的权限。
本文还解释了使用 ssh-copy-id
的 3 个小烦恼以及如何将 ssh-copy-id
与 ssh-agent
一起使用。
第 1 步:在本地主机上使用 ssh-key-gen 创建公钥和私钥
迹忆客@jiyik.com-local$ [Note: You are on jiyik.com-local here]
迹忆客@jiyik.com-local$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jiyik/.ssh/id_rsa):[Enter key]
Enter passphrase (empty for no passphrase): [Press enter key]
Enter same passphrase again: [Pess enter key]
Your identification has been saved in /home/jiyik/.ssh/id_rsa.
Your public key has been saved in /home/jiyik/.ssh/id_rsa.pub.
The key fingerprint is:
33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 迹忆客@jiyik.com-local
第 2 步:使用 ssh-copy-id 将公钥复制到远程主机
迹忆客@jiyik.com-local$ ssh-copy-id -i ~/.ssh/id_rsa.pub jiyik.com-remote
迹忆客@jiyik.com-local's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
注意
:ssh-copy-id 将密钥附加到远程主机的 .ssh/authorized_key。
第 3 步:不输入密码登录远程主机
迹忆客@jiyik.com-local$ ssh jiyik.com-remote
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
[Note: SSH did not ask for password.]
迹忆客@jiyik.com-remote$ [Note: You are on remote-host here]
在大多数情况下,以上 3 个简单的步骤应该可以完成工作。
我们之前还详细讨论了在不输入密码的情况下从 openSSH 到 openSSH 执行 SSH 和 SCP。
如果大家使用的是 SSH2,我们之前讨论过从 SSH2 到 SSH2 、从 OpenSSH 到 SSH2 以及从 SSH2 到 OpenSSH 执行 SSH 和 SCP 无需密码。
将 ssh-copy-id 与 ssh-add/ssh-agent 一起使用
如果没有为选项 -i 传递任何值并且如果 ~/.ssh/identity.pub 不可用,则 ssh-copy-id
将显示以下错误消息。
迹忆客@jiyik.com-local$ ssh-copy-id -i jiyik.com-remote
/usr/bin/ssh-copy-id: ERROR: No identities found
如果大家已使用 ssh-add
将密钥加载到 ssh-agent
,则 ssh-copy-id
将从 ssh-agent
获取密钥以复制到远程主机。 即,当不将选项 -i 传递给 ssh-copy-id
时,它会将 ssh-add -L
命令提供的密钥复制到远程主机。
迹忆客@jiyik.com-local$ ssh-agent $SHELL
迹忆客@jiyik.com-local$ ssh-add -L
The agent has no identities.
迹忆客@jiyik.com-local$ ssh-add
Identity added: /home/jiyik/.ssh/id_rsa (/home/jiyik/.ssh/id_rsa)
迹忆客@jiyik.com-local$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jiyik/.ssh/id_rsa
迹忆客@jiyik.com-local$ ssh-copy-id -i jiyik.com-remote
迹忆客@jiyik.com-remote's password:
Now try logging into the machine, with "ssh 'jiyik.com-remote'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[Note: This has added the key displayed by ssh-add -L]
ssh-copy-id 的三个小烦恼
以下是 ssh-copy-id 的一些小问题。
-
默认公钥:
ssh-copy-id
使用 ~/.ssh/identity.pub 作为默认公钥文件(即当没有值传递给选项 -i 时)。相反,我希望它使用 id_dsa.pub、id_rsa.pub 或 identity.pub 作为默认键。即如果其中任何一个存在,它应该将其复制到远程主机。如果存在两个或三个,则应默认复制 identity.pub。 -
代理没有身份:当
ssh-agent
正在运行并且ssh-add -L
返回“The agent has no identities”(即没有向ssh-agent
添加密钥)时,ssh-copy-id
仍将复制将消息“The agent has no identities”发送到远程主机的 authorized_keys 条目。 -
授权密钥中的重复条目:我希望
ssh-copy-id
验证远程主机的授权密钥上的重复条目。如果在本地主机上多次执行ssh-copy-id
,它将继续在远程主机的 authorized_keys 文件上附加相同的密钥,而不检查重复项。即使有重复的条目,一切都按预期工作。但是,我想让我的 authorized_keys 文件杂乱无章。
相关文章
在 Git 中使用 SSH 密钥克隆仓库或分支
发布时间:2023/04/04 浏览次数:83 分类:Git
-
你可以在本教程中使用 SSH 密钥进行 Git 克隆 - 在 Git 中设置 SSH,在 GitHub 中更新 SSH 公钥,并使用选项 - 仅克隆特定分支、选择的位置或仅克隆最近的提交。
Git push 使用 SSH 密钥
发布时间:2023/03/30 浏览次数:131 分类:Git
-
SSH 代表 Secure Shell。 它是为我们提供 SSH 网络协议访问证书的密钥。它提供对无保证开放网络上引擎之间的远程服务器的访问。 它用于传输数据、文件和网络管理,并提供从源头访问远程服务器
Linux iptables:传入和传出规则示例(SSH 和 HTTP)
发布时间:2022/10/23 浏览次数:187 分类:操作系统
-
在我们之前的 IPTables 防火墙系列文章中,我们回顾了如何使用 iptables -A 添加防火墙规则。我们还解释了如何允许传入的 SSH 连接。
Linux iptables:如何添加防火墙规则(以允许 SSH 为例)
发布时间:2022/10/23 浏览次数:246 分类:操作系统
-
本文介绍如何使用 iptables -A(附加)命令添加 iptables 防火墙规则。
如何在 Linux 上设置反向 SSH 隧道
发布时间:2022/10/22 浏览次数:233 分类:操作系统
-
反向 SSH 是一种可用于从外部访问系统(位于防火墙后面)的技术。如大家所知,SSH 是一种支持网络节点之间加密通信的网络协议。 使用此协议,我们可以进行安全的远程登录、从/到远
如何在没有密码的情况下从 SSH2 到 OpenSSH 执行 SSH 和 SCP
发布时间:2022/10/22 浏览次数:186 分类:操作系统
-
在我们之前的文章中,我们讨论了如何设置基于 ssh 密钥的身份验证以在以下三种情况下执行 ssh 和 scp 无需密码:OpenSSH 到 OpenSSH;OpenSSH 到 SSH2;SSH2 到 SSH2。
从 openSSH 到 SSH2 的基于 SSH 密钥的身份验证设置
发布时间:2022/10/22 浏览次数:110 分类:操作系统
-
之前的文章(openSSH 到 openSSH 设置,SSH2 到 SSH2 设置)解释了如何在相同版本的 ssh 上设置基于密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。 本文介绍如何在不同版本的 SS