如果要在基于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密钥密码的方法。
步骤二:将公钥上传到远程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 至此,操作完成。
相关主题 |