如果要在基于Linux的系统中使许多事情自动化,则首要要求是在Linux系统之间设置无密码SSH身份验证。另外,如果您的环境中有大量服务器,则必须设置无密码SSH身份验证,因为您无法每次都在终端中输入密码,同时也有诸多不便,因为在某些问题上使用多台服务器时,这可能会减慢您的工作速度。不过这只需两个简单的步骤即可轻松完成,在本文中,我们将说明如何在Linux系统上设置无密码SSH登录。
步骤一:在您的本地系统上生成公钥/私钥对(RSA或DSA)
首先我们需要通过运行ssh-keygen命令来生成SSH密钥对(RSA或DSA)。
如果您想设置完全无密码的登录,请不要在提示时输入密码:
$ ssh-keygen
上面的命令将在~/.ssh目录中创建以下两个文件:
~/.ssh/id_rsa:私钥。
~/.ssh/id_rsa.pub:公钥。
可以使用ls命令查看生成的密钥:
$ ls -lh ~/.ssh/
默认情况下,它会生成RSA类型的密钥对,如果您想生成DSA类型的密钥对,请在ssh-keygen命令中使用-t选项:
# ssh-keygen -t dsa
默认情况下,密钥的长度为2048位,如果您希望更强的安全性,则可以使用-b选项指定4096位的密钥:
# ssh-keygen -t rsa -b 4096
步骤二:将公钥上传到远程Linux服务器
可以使用ssh-copy-id命令将其轻松复制到远程Linux服务器:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub daygeek@192.168.1.7
公钥将存储在远程用户主目录中的~/.ssh/authorized_keys文件中。
现在该进行测试了,现在,您无需输入密码就可以通过SSH进入远程服务器:
$ ssh daygeek@192.168.1.7
温馨提示:如何在Linux中禁用密码身份验证?
实现这个操作非常的简单。由于我们启用了基于公共密钥的身份验证,因此,我建议您禁用基于密码的身份验证,以防止暴力攻击。
为此,请在远程服务器上的/etc/ssh/sshd_config文件中进行以下更改:
# vi /etc/ssh/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no
最后重新启动ssh服务。
对于SysVinit系统:
# service ssh restart
对于systemd系统:
# systemctl restart ssh
至此,操作完成。
相关主题