如何在Linux中设置ssh无密码登录

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

ssh用于远程登录 Linux 服务器,当我们使用ssh命令登录远程服务器时,必须输入对方的密码,才能登录成功。但是如果我们经常需要远程登录大量的服务器,每次登录输入密码就会非常繁琐,费时又费力。

我们知道ssh除了支持基于密码的身份验证方式,还支持基于公钥的身份验证方式,接下来就介绍一下如何设置基于SSH密钥的身份验证在不输入密码的情况下登录到远程服务器。

设置ssh无密码登录

要在Linux中设置无密码ssh登录,需要生成公共身份验证密钥并将其添加到远程服务器的~/.ssh/authorized_keys文件即可。

检查现有的SSH密钥对

在生成新的SSH密钥对之前,可以通过一下命令检查一下自己的服务器上是否已经存在密钥:

1
shell复制代码ls -al ~/.ssh/id_*.pub

如果显示No such file or directory说明之前没有生成密钥,继续执行下面的命令生成新密钥:

1
shell复制代码ssh-keygen -t rsa -C "tigeriaf"

以下命令将生成一个新的ssh密钥对,并将”tigeriaf”作为注释。

image.png

将会生成密钥文件id_rsa和私钥文件id_rsa.pub(如果用dsa则生成id_dsaid_dsa.pub)。

关于ssh-keygen的使用方法以及选项参数可以,查看之前的文章:Linux ssh-keygen 命令详解

复制公钥到远程服务器

上面已经生成了ssh密钥对,要实现在没有密码的情况下登录远程服务器,还需要将公钥复制远程服务器。

使用的命令是ssh-copy-id。在本地机器执行:

1
shell复制代码ssh-copy-id username@ip_address

输入远程服务器用户的密码,通过身份验证后,公钥将附加到远程服务器用户的authorized_keys文件中。

image.png

使用ssh密钥登录服务器

上面的步骤都完成后,就能够通过ssh无密码登录到远程服务器了。

1
shell复制代码ssh username@ip_address

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%