Linux :从 openSSH 到 SSH2 的基于 SSH 密钥的身份验证设置

举报
Tiamo_T 发表于 2021/09/23 17:29:09 2021/09/23
【摘要】 之前的文章(openSSH 到 openSSH 的设置,SSH2 到 SSH2 的设置)解释了如何在相同版本的 ssh 上设置基于密钥的身份验证来执行 ssh 和 scp,而无需输入密码。本文介绍了如何在不同版本的 SSH(从 openSSH 到 SSH2)之间设置基于 SSH 密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。1. 验证本地主机和远程主机的 SSH 版本。在这...

之前的文章(openSSH 到 openSSH 的设置SSH2 到 SSH2 的设置)解释了如何在相同版本的 ssh 上设置基于密钥的身份验证来执行 ssh 和 scp,而无需输入密码。本文介绍了如何在不同版本的 SSH(从 openSSH 到 SSH2)之间设置基于 SSH 密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。

1. 验证本地主机和远程主机的 SSH 版本。

在这个例子中,local-host 在 openSSH 上运行,而 remote-host 在 SSH2 上运行。

[local-host]$ ssh -V
OpenSSH_5.0p1, OpenSSL 0.9.8g 19 Oct 2007

[remote-host]$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu
[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 在本地主机上生成密钥对

[local-host]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tiamo/.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/tiamo/.ssh/id_rsa.
Your public key has been saved in /home/tiamo/.ssh/id_rsa.pub.
The key fingerprint is:
3b:2a:d2:ac:8c:71:81:7e:b7:31:21:11:b8:e8:31:ad tiamo@local-host

公钥和私钥通常存储在您的主目录下的 .ssh 文件夹中。在此示例中,它位于 /home/jsmith/.sshd 下。您不应该与任何人共享私钥。

默认情况下,openSSH 上的 ssh-keygen 生成 RSA 密钥对。您还可以使用以下命令生成 DSA 密钥对:ssh-keygen -t dsa命令。

3. 将 openSSH 公钥转换为 SSH2 公钥。

在运行 openSSH 的本地主机上,使用 ssh-keygen 将 openSSH 公钥转换为 SSH2 公钥,如下所示。

[local-host]$ ssh-keygen -e -f ~/.ssh/id_rsa.pub > ~/.ssh/id_rsa_ssh2.pub

4. 在运行 SSH2 的远程主机上安装公钥。

在远程主机上创建一个新的公钥文件,并从本地主机复制粘贴转换后的 SSH2 密钥。

[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 ----

将上述公钥文件名添加到远程主机上的授权文件中,如下所示。


[remote-host]$ vi ~/.ssh2/authorization 
Key local-host_ssh2_key.pub

5. 使用 SSH2 密钥身份验证验证从本地主机到远程主机的登录。

[local-host]$ ssh -l tiamo 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/tiamo/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 21 2020 23:13:00 -0700 from 192.168.1.102
No mail.
[remote-host]$ <You are on remote-host here>

有两种方法可以在不输入密码的情况下执行 ssh 和 scp:

  1. 没有密码。创建密钥对时,请将密码留空。将此选项用于自动批处理。例如,如果您正在运行 cron 作业以在机器之间复制文件,这是合适的选项。您可以跳过此方法的后续步骤。
  2. 使用密码和 SSH 代理。如果您在命令行中以交互方式使用 ssh 和 scp 并且不想在每次执行 ssh 或 scp 时都使用密码,我不建议使用前一个选项(无密码),因为您已经消除了一个级别基于 ssh 密钥的身份验证中的安全性。相反,在创建密钥对时使用密码短语并使用 SSH 代理执行 ssh 和 scp,而无需每次都输入密码,如下面的步骤所述。

6. 在本地主机上启动 SSH 代理

SSH 代理将在后台运行以保存私钥并执行 ssh 和 scp,而无需多次输入密码。

[local-host]$ ssh-agent $SHELL

7. 将私钥加载到本地主机上的 SSH 代理。

[local-host]$ ssh-add
Enter passphrase for /home/tiamo/.ssh/id_rsa:<Enter your passphrase here>
Identity added: /home/tiamo/.ssh/id_rsa (/home/tiamo/.ssh/id_rsa)

8. 在不输入密码的情况下,从本地主机执行 SSH 或 SCP 到 remote-home。

[local-host]$<You are on local-host here>

[local-host]$ ssh -l tiamo remote-host
Last login: Sat Jun 07 2008 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>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。