3个简单步骤即可完成无密码SSH登录

时间:2020-02-23 14:41:37  来源:igfitidea点击:

SSH(Secure SHELL)是一种安全的开源网络协议,允许用户安全地登录到远程Linux系统和其他网络设备。
此外,该协议还用于使用安全复制(SCP)协议在Linux系统之间传输文件。

通常,SSH在登录前提示用户输入密码。
但是,您可以将SSH无密码登录配置为从Linux系统登录到另一个远程Linux系统。
这样可以增强信任度,并在需要使用SCP协议远程备份文件的cron作业中派上用场。

在本教程中,您将学习如何使用ssh密钥设置无密码SSH登录,以增加两个服务器之间的信任。

搭建环境

ssh client      : 66.152.163.19 (Ubuntu 18.04)

ssh remote Host : 173.82.2.236  (CentOS 7)

在客户端系统上生成SSH密钥(66.152.163.19)

设置无密码登录名的第一步是在客户端系统中生成ssh认证密钥。
SSH密钥是在Linux系统之间建立信任的数字密钥。

要生成ssh密钥,请执行命令。

$ssh-keygen

系统将提示您输入要保存密钥的文件。
点击" Enter"以保存到默认位置目录(/root/.ssh)

Enter file in which to save the key (/home/user/.ssh/id_rsa):

按下Enter键。

接下来,将提示您输入密码。
这是我们要设置的无密码登录名,按两次" Enter"以跳过。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

两次都点击" Enter"。

完整的输出如下所示。

ssh-keygen命令生成公共和私有ssh密钥,并将它们存储在/root/.ssh目录中。

验证运行:

ls /root/.ssh

公钥由" id_rsa.pub"表示。

私钥由" id_rsa"表示。

将ssh公钥复制到远程系统(173.82.2.236)

下一步是将公钥复制到远程Linux服务器。
这将使用如下所示的" ssh-copy-id"命令来实现。

ssh-copy-id remote_username@server_ip_address

在我们的示例中,命令将为:

ssh-copy-id [email protected]

系统将询问您是否确定要继续连接。
输入"是",然后点击"输入"

The authenticity of host '173.82.2.236 (173.82.2.236)' can't be established.
ECDSA key fingerprint is SHA256:U4aOk0p30sFjv1rzgh73uhGilwJ2xtG205QFqzB9sns.
Are you sure you want to continue connecting (yes/no)? yes

接下来,将提示您输入远程系统的密码。
输入密码,然后按" Enter"

[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

完整的输出如下所示。

ssh公钥将保存在远程系统上的/root/.ssh/authorized_keys文件中。

登录到远程系统

将公共ssh密钥复制到远程系统后,您现在可以登录,而无需提示输入密码,如图所示。

ssh server-ip-address

对于我们的情况,这将是:

ssh 173.82.2.236

这就是从客户端Linux系统到远程Linux服务器的无密码SSH设置过程。

  • 从客户端系统中删除公钥。
    如果您认为私钥已被破坏,请从远程服务器上删除公钥,然后重新设置。

  • 上面的SSH命令可以在不提供用户ID的情况下工作,因为我们在两个服务器上都使用了root用户。
    如果您为其他用户设置了无密码登录,请在SSH命令中也提供该密码。