如何在Linux中设置ssh无密码登录
ssh
用于远程登录 Linux 服务器,当我们使用ssh
命令登录远程服务器时,必须输入对方的密码,才能登录成功。但是如果我们经常需要远程登录大量的服务器,每次登录输入密码就会非常繁琐,费时又费力。
我们知道ssh
除了支持基于密码的身份验证方式,还支持基于公钥的身份验证方式,接下来就介绍一下如何设置基于SSH密钥的身份验证在不输入密码的情况下登录到远程服务器。
设置ssh无密码登录
要在Linux中设置无密码ssh登录,需要生成公共身份验证密钥并将其添加到远程服务器的~/.ssh/authorized_keys
文件即可。
检查现有的SSH密钥对
在生成新的SSH密钥对之前,可以通过一下命令检查一下自己的服务器上是否已经存在密钥:
ls -al ~/.ssh/id_*.pub 复制代码
如果显示No such file or directory
说明之前没有生成密钥,继续执行下面的命令生成新密钥:
ssh-keygen -t rsa -C "tigeriaf" 复制代码
以下命令将生成一个新的ssh
密钥对,并将"tigeriaf"作为注释。
将会生成密钥文件id_rsa
和私钥文件id_rsa.pub
(如果用dsa则生成id_dsa
和id_dsa.pub
)。
关于ssh-keygen
的使用方法以及选项参数可以,查看之前的文章:Linux ssh-keygen 命令详解。
复制公钥到远程服务器
上面已经生成了ssh
密钥对,要实现在没有密码的情况下登录远程服务器,还需要将公钥复制远程服务器。
使用的命令是ssh-copy-id
。在本地机器执行:
ssh-copy-id username@ip_address 复制代码
输入远程服务器用户的密码,通过身份验证后,公钥将附加到远程服务器用户的authorized_keys
文件中。
使用ssh密钥登录服务器
上面的步骤都完成后,就能够通过ssh
无密码登录到远程服务器了。
ssh username@ip_address 复制代码
作者:tigeriaf
链接:https://juejin.cn/post/7026512562061590559