从 openSSH 到 SSH2 的基于 SSH 密钥的身份验证设置
之前的文章(openSSH 到 openSSH 设置,SSH2 到 SSH2 设置)解释了如何在相同版本的 ssh 上设置基于密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。 本文介绍如何在不同版本的 SSH(从 openSSH 到 SSH2)之间设置基于 SSH 密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。
1. 验证本地主机和远程主机 SSH 版本。
在此示例中,本地主机在 openSSH
上运行,远程主机在 SSH2 上运行。
[jiyik.com@local-host]$ ssh -V
OpenSSH_5.0p1, OpenSSL 0.9.8g 19 Oct 2007
[jiyik.com@remote-host]$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu
[jiyik.com@remote-host]$ ls -l /usr/local/bin/ssh
lrwxrwxrwx 1 root root 4 Mar 10 22:04 /usr/local/bin/ssh -> ssh2
2. 使用 ssh-keygen 在本地主机上生成密钥对
[jiyik.com@local-host]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jiyik/.ssh/id_rsa):<Hit enter>
Enter passphrase (empty for no passphrase): <Enter your passphrase here>
Enter same passphrase again:<Enter your passphrase again>
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:
3b:2a:d2:ac:8c:71:81:7e:b7:31:21:11:b8:e8:31:ad jsmith@local-host
公钥和私钥通常存储在主目录下的 .ssh 文件夹中。 在本例中,它位于 /home/jiyik/.sshd 下。 我们不应与任何人共享私钥。
默认情况下,openSSH
上的 ssh-keygen 会生成 RSA 密钥对。 我们还可以使用 ssh-keygen -t dsa
命令生成 DSA 密钥对。
3.将openSSH公钥转换为SSH2公钥。
在运行 openSSH 的本地主机上,使用 ssh-keygen
将 openSSH 公钥转换为 SSH2 公钥,如下所示。
[jiyik.com@local-host]$ ssh-keygen -e -f ~/.ssh/id_rsa.pub > ~/.ssh/id_rsa_ssh2.pub
4. 在运行 SSH2 的远程主机上安装公钥。
在远程主机上创建一个新的公钥文件并从本地主机复制粘贴转换后的 SSH2 密钥。
[jiyik.com@remote-host]$ vi ~/.ssh2/local-host_ssh2_key.pub
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted from OpenSSH by jsmith@local-host"
DDDDB3NzaC1yc2EAAAABDmbrdomPh9rWfjZ1+7Q369zsBEa7wS1RxzWRQ0Bmr9FSplI
3ADBEBC/6cbdf/v0r6Cp5y5kusP07AOzo2F7MBDSZBtS/MbYJiIxvocoaxG2bQyz3yYjU
YcpzGMD182bnA8kRxmGg+R5pVXM34lx3iSSgd8r3RzZKnDpEvEInnI7pQvUBoEbYCXPUeZ
LQvQAkz6+Pb6SsNp-dop/qgv9qyfbyMz1iKUZGadG146GtanL5QtRwyAeD187gMzzrGzMFP
LWjdzWpGILdZ5gq7wwRpbcXFUskVrS2ZjDe676XlTN1k5QSZmSYUuttDdrjB5SFiMpsre8
a7cQuMS178i9eDBEC==
---- END SSH2 PUBLIC KEY ----
将上述公钥文件名添加到远程主机上的授权文件中,如下所示。
[jiyik.com@remote-host]$ vi ~/.ssh2/authorization
Key local-host_ssh2_key.pub
5. 使用 SSH2 密钥验证验证从本地主机到远程主机的登录。
[jiyik.com@local-host]$ ssh -l jiyik remote-host <You are on local-host here>
The authenticity of host 'local-host' can't be established.
DSA key fingerprint is a5:f6:2e:e6:a9:b2:7b:0e:e7:ae:cb:6c:7b:f5:6d:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'local-host' (DSA) to the list of known hosts.
Enter passphrase for key '/home/jiyik/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 21 2022 23:13:00 -0700 from 192.168.1.102
No mail.
[jiyik.com@remote-host]$ <You are on remote-host here>
在不输入密码的情况下,执行 ssh 和 scp 有两种方式:
- 没有密码 。 创建密钥对时,将密码留空。 使用此选项进行自动批处理。 例如 如果我们正在运行 cron 作业以在机器之间复制文件,这是合适的选择。 我们可以跳过此方法的后续步骤。
- 使用密码和 SSH 代理 。 如果我们从命令行以交互方式使用 ssh 和 scp,并且我们不想每次执行 ssh 或 scp 时都使用密码,我不推荐上一个选项(无密码),因为我么 已经消除了一个级别 基于 ssh 密钥的身份验证中的安全性。 相反,在创建密钥对时使用密码短语并使用 SSH 代理执行 ssh 和 scp,而不必每次都输入密码,如下面的步骤所述。
6. 在本地主机上启动 SSH 代理
SSH 代理将在后台运行以保存私钥并执行 ssh 和 scp,而无需多次输入密码。
[jiyik.com@local-host]$ ssh-agent $SHELL
7. 将私钥加载到本地主机上的 SSH 代理
[jiyik.com@local-host]$ ssh-add
Enter passphrase for /home/jiyik/.ssh/id_rsa:<Enter your passphrase here>
Identity added: /home/jiyik/.ssh/id_rsa (/home/jiyik/.ssh/id_rsa)
8. 从本地主机执行 SSH 或 SCP 到 remote-home,无需输入密码。
[jiyik.com@local-host]$<You are on local-host here>
[jiyik.com@local-host]$ ssh -l jiyik remote-host
Last login: Sat Jun 07 2022 23:03:04 -0700 from 192.168.1.102
No mail.
<ssh did not ask for passphrase this time>
[remote-host]$ <You are on remote-host here>
相关文章
如何在 Linux 上设置反向 SSH 隧道
发布时间:2022/10/22 浏览次数:233 分类:操作系统
-
反向 SSH 是一种可用于从外部访问系统(位于防火墙后面)的技术。如大家所知,SSH 是一种支持网络节点之间加密通信的网络协议。 使用此协议,我们可以进行安全的远程登录、从/到远
3 步使用 ssh-keygen 和 ssh-copy-id 执行无密码 SSH 登录
发布时间:2022/10/22 浏览次数:164 分类:操作系统
-
如本文所述,我们可以使用 ssky-keygen 和 ssh-copy-id 通过 3 个简单的步骤登录到远程 Linux 服务器而无需输入密码。
如何在没有密码的情况下从 SSH2 到 OpenSSH 执行 SSH 和 SCP
发布时间:2022/10/22 浏览次数:186 分类:操作系统
-
在我们之前的文章中,我们讨论了如何设置基于 ssh 密钥的身份验证以在以下三种情况下执行 ssh 和 scp 无需密码:OpenSSH 到 OpenSSH;OpenSSH 到 SSH2;SSH2 到 SSH2。
基于 SSH2 密钥的身份验证设置
发布时间:2022/10/22 浏览次数:110 分类:操作系统
-
我之前解释了如何在不输入密码的情况下在 openSSH 上执行 SSH 和 SCP。 在本文中,我将解释如何使用以下 10 个步骤在 SSH2 上设置基于密钥的身份验证并在不输入密码的情况下执行 SSH/SCP。
在 openSSH 上无需输入密码即可执行 SSH 和 SCP
发布时间:2022/10/22 浏览次数:72 分类:操作系统
-
基于 SSH 密钥的身份验证有两个安全级别。为了让我们登录,我们需要私钥和密码。即使其中一个被入侵,攻击者仍然无法登录我们的帐户,因为需要它们两个才能登录。这比典型的基于
生成安全 SSH 密钥
发布时间:2022/07/07 浏览次数:236 分类:学无止境
-
作为软件开发人员,我们可能需要经常使用 SSH 密钥。 进行系统管理或将提交推送到 GitHub 或 GitLab 等源代码控制被认为是通过 SSH 使用公钥身份验证而不是密码的最佳实践。
如何通过 SSH 连接到 Docker 容器
发布时间:2022/02/28 浏览次数:536 分类:学无止境
-
SSH 是系统管理员工具箱中最常用的命令之一,但它在 Docker 中并不常用。 有时候我们也会需要使用SSH来连接Docker容器。本篇我们就介绍 Docker中的SSH。