3个简单步骤即可完成无密码SSH登录
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命令中也提供该密码。