在 openSSH 上无需输入密码即可执行 SSH 和 SCP
基于 SSH 密钥的身份验证有两个安全级别。为了让我们登录,我们需要私钥和密码。即使其中一个被入侵,攻击者仍然无法登录我们的帐户,因为需要它们两个才能登录。这比典型的基于密码的身份验证要好得多,如果密码被泄露,攻击者可以访问系统。
在不输入密码的情况下,执行 ssh 和 scp 有两种方式:
- 没有密码。创建密钥对时,将密码留空。使用此选项进行自动批处理。例如如果我们正在运行 cron 作业以在机器之间复制文件,这是合适的选择。
- 使用密码和 SSH 代理。如果我们从命令行以交互方式使用 ssh 和 scp,并且我们不想每次执行 ssh 或 scp 时都使用密码,我不推荐上一个选项(无密码),因为我们已经消除了一个级别基于 ssh 密钥的身份验证中的安全性。相反,在创建密钥对时使用密码短语并使用 SSH 代理执行 ssh 和 scp,而无需每次都输入密码,如下面的步骤所述。
以下 8 个步骤说明了如何在 openSSH
系统上不输入密码的情况下从本地主机到远程主机执行 SSH 和 SCP
1. 验证本地主机和远程主机是否正在运行 openSSH
[jiyik.com@local-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
[jiyik.com@remote-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2006
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:
31:3a:5d:dc:bc:81:81:71:be:31:2b:11:b8:e8:39:a0 jiyik@local-host
公钥和私钥通常存储在主目录下的 .ssh 文件夹中。 在本例中,它位于 /home/jiyik/.sshd 下。 我们不应与任何人共享私钥。
默认情况下,**openSSH
** 上的 ssh-keygen
会生成 RSA 密钥对。 我们还可以使用 ssh-keygen -t dsa
命令生成 DSA 密钥对。
3. 在远程主机上安装公钥。
从本地主机复制公钥的内容并将其粘贴到远程主机上的 /home/jsmith/.ssh/authorized_keys。 如果 /home/jiyik/.ssh/authorized_keys 已经有一些其他公钥,我们可以将其附加到它的末尾。 如果远程主机的主目录下的 .ssh 目录不存在,请创建它。
[jiyik.com@remote-host]$ vi ~/.ssh/authorized_keys
ssh-rsa ABIwAAAQEAzRPh9rWfjZ1+7Q369zsBEa7wS1RxzWR jiyik@local-host
简单来说就是将local-host:/home/jiyik/.ssh/id_rsa.pub复制到remote-host:/home/jiyik/.ssh/authorized_keys
4. 为远程主机上的 .ssh 目录授予适当的权限。
[jiyik.com@remote-host]$ chmod 755 ~/.ssh
[jiyik.com@remote-host]$ chmod 644 ~/.ssh/authorized_keys
5. 从本地主机登录到远程主机,使用 SSH 密钥认证,验证是否正常工作。
[jiyik.com@local-host]$ <You are on local-host here>
[jiyik.com@local-host]$ ssh -l jsmith remote-host
Enter passphrase for key '/home/jiyik/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 07 2022 23:03:04 -0700 from 192.168.1.102
No mail.
[jiyik.com@remote-host]$ <You are on remote-host here>
6. 在本地主机上启动 SSH 代理以执行 ssh 和 scp,而无需多次输入密码。
验证 SSH 代理是否已经在运行,如果没有启动它,如下所示。
[jiyik.com@local-host]$ ps -ef | grep ssh-agent
511 9789 9425 0 00:05 pts/1 00:00:00 grep ssh-agent
[jiyik.com@local-host]$ ssh-agent $SHELL
[jiyik.com@local-host]$ ps -ef | grep ssh-agent
511 9791 9790 0 00:05 ? 00:00:00 ssh-agent /bin/bash
511 9793 9790 0 00:05 pts/1 00:00:00 grep ssh-agent
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/jsmith/.ssh/id_rsa)
以下是 ssh-add
中可用的不同选项:
-
ssh-add
:加载特定的密钥文件。 - ssh-add -l :列出所有在 ssh 代理中加载的密钥。
-
ssh-add -d
:从 ssh 代理中删除一个特定的密钥 - ssh-add -D :删除所有密钥
8. 从本地主机执行 SSH 或 SCP 到远程主目录,无需输入密码。
[jiyik.com@local-host]$<You are on local-host here>
[jiyik.com@local-host]$ ssh -l jsmith 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>
相关文章
如何在没有密码的情况下从 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