在 openSSH 上不输入密码执行 SSH 和 SCP

举报
Tiamo_T 发表于 2021/09/21 17:27:52 2021/09/21
【摘要】 在本文中,我将解释如何在不输入密码的情况下使用 SSH 公钥身份验证在 openSSH 上使用 SSH 代理执行 ssh 和 scp基于 SSH 密钥的身份验证有两个安全级别。为了让您登录,您需要私钥和密码。即使其中一个被攻破,攻击者仍然无法登录您的帐户,因为他们都需要登录。这比典型的基于密码的身份验证要好得多,如果密码被泄露,攻击者可以访问系统。有两种方法可以在不输入密码的情况下执行 ss...

在本文中,我将解释如何在不输入密码的情况下使用 SSH 公钥身份验证在 openSSH 上使用 SSH 代理执行 ssh 和 scp

基于 SSH 密钥的身份验证有两个安全级别。为了让您登录,您需要私钥和密码。即使其中一个被攻破,攻击者仍然无法登录您的帐户,因为他们都需要登录。这比典型的基于密码的身份验证要好得多,如果密码被泄露,攻击者可以访问系统。

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

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

以下8个步骤解释了如何在openSSH系统上执行从本地主机到远程主机的SSH和SCP,而无需输入密码

1. 验证 local-host 和 remote-host 是否正在运行 openSSH

[local-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2020

[remote-host]$ ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8b 04 May 2020

2. 使用 ssh-keygen 在本地主机上生成密钥对

[local-host]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.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/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
31:3a:5d:dc:bc:81:81:71:be:31:2b:11:b8:e8:39:a0 tiamo@local-host

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

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

3. 在远程主机上安装公钥。

从本地主机复制公钥的内容并将其粘贴到远程主机上的 /home/jsmith/.ssh/authorized_keys。如果 /home/jsmith/.ssh/authorized_keys 已经有其他一些公钥,您可以将其附加到它的末尾。如果远程主机上您的主目录下的 .ssh 目录不存在,请创建它。


[remote-host]$ vi ~/.ssh/authorized_keys 
ssh-rsa ABIwAAAQEAzRPh9rWfjZ1+7Q369zsBEa7wS1RxzWR jsmith@local-host

简单来说,将local-host:/home/jsmith/.ssh/id_rsa.pub复制到remote-host:/home/jsmith/.ssh/authorized_keys

4. 为远程主机上的 .ssh 目录授予适当的权限。

[remote-host]$ chmod 755 ~/.ssh
[remote-host]$ chmod 644 ~/.ssh/authorized_keys

5.从local-host登录到remote-host,使用SSH key认证,验证是否正常。

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

[local-host]$ ssh -l tiamo remote-host
Enter passphrase for key '/home/tiamo/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 07 2020 23:03:04 -0700 from 192.168.1.102
No mail.

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

6. 在本地主机上启动 SSH 代理以执行 ssh 和 scp,而无需多次输入密码。

验证 SSH 代理是否已经在运行,如果没有启动,如下所示。

[local-host]$ ps -ef | grep ssh-agent
 511       9789  9425  0 00:05 pts/1    00:00:00 grep ssh-agent
 
[local-host]$ ssh-agent $SHELL
 
[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 代理。

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

以下是 ssh-add 中可用的不同选项:

  • ssh-add <key-file-name>:加载特定的密钥文件。
  • ssh-add -l:列出 ssh 代理中加​​载的所有密钥。
  • ssh-add -d <key-file-name>:从 ssh 代理中删除特定的密钥
  • ssh-add -D:删除所有密钥

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 2020 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个月内不可修改。