Centos SSH免密码登录
最近更新时间 2020-01-16 13:56:36
SSH概述
SSH (全称:Secure Shell)是加密的网络传输协议,常用于远程登录服务器,执行命令。Windows下可以用SSH客户端进行远程连接。
SSH基于密码的安全验证,无法避免“中间人”攻击;而基于密钥(免密码)的安全验证能避免被攻击,方便服务器之间脚本进行访问、执行任务脚本或者传输文件而无需输入密码。
现在,假设有A、B两台Linux服务器,需要在A服务器免密码登录B服务器,可以进行如下操作。后面还会介绍A、B相互免密码访问的操作。
密钥配置
1.在主机A中生成密钥
登录主机A,输入ssh-keygen
命令,如下所示:
连续三次默认回车,结果如下图所示:
默认会在 ~/.ssh 目录下生成 id_rsa 和 id_rsa.pub 文件。id_rsa 是私钥文件,id_rsa.pub 是公钥文件。此处密钥文件位置和名称可以在上图中自己定义。
2.复制公钥到主机B
需要把主机A中生成的公钥id_rsa.pub
添加到主机B中,输入以下命令:
输入主机B的密码,执行结果如下图所示:
如果ssh不能登录主机B则不能使用 ssh-copy-id
命令。可以把主机A的公钥 id_rsa.pub 里面的内容手动添加到主机B的 authorized_keys 文件中。authorized_keys 文件一般位于主机B中的.ssh目录中,文件权限为 600。
3.主机A免密码登录主机B
完成前面两步,主机A就可以免密码登录主机B,命令如下:
扩展思路
以上步骤能实现主机A免密码访问主机B,如果需要主机B也能免密码访问主机A,按以上步骤在主机B执行即可。
如果需要主机C、主机D等都能免密码登录主机B,可以按以上流程每台机器都生成私钥,或者直接复制主机A的私钥到其他服务器的 .ssh 目录下,就可实现多服务器免密码访问主机B。
如果需要主机A免密码访问主机C、主机D等等,执行第2步到对应的机器或者在对应机器的 authorized_keys 文件中添加主机A的公钥 id_rsa.pub,就可实现主机A免密码访问多服务器。
可能遇到的问题
可能是文件权限问题,设置私钥文件权限为 600即可。chmod 600 ~/.ssh/id_rsa