这里假设主机A(192.168.0.113)用来远程链接主机B(192.168.0.186)linux
在主机A上执行以下命令来生成配对密钥:ssh-keygen -t rsa -b 3072算法
-t参数指定加密算法为rsa,-b参数指定密钥长度,能够是102四、204八、3072等等,位数越长,被暴力破解所需的时间越久vim
遇到提示回车默认便可,公钥被存到用户目录下.ssh目录,好比root存放在:/root/.ssh/id_rsa.pubssh
将 .ssh 目录中的 id_rsa.pub 文件传输到主机B
在主机A中执行以下命令和主机B创建信任,例(假设主机B的IP为:192.168.0.186):ide
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.186
如上命令的实际效果是在主机B的/root/.ssh/的目录下新建一个authorized_keys文件,其内容就是主机A的id_rsa.pub内容测试
下面就能够用scp、ssh命令不须要密码来远程链接主机B了加密
ssh root@192.168.0.186 回车就不须要密码了。
若是机器B须要添加多个机器的公钥,则须要在authorized_keys中追加公钥内容,命令以下:
在其余机器上把公钥文件发送给主机B,而后在主机B上执行以下命令rest
cat id_rsa.pub >> /root/.ssh/authorized_keys
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单it
若是但愿ssh公钥生效需知足至少下面两个条件:io
# vim /etc/ssh/sshd_config PasswordAuthentication no //yes改成no ChallengeResponseAuthentication no //yes改成no RSAAuthentication yes //去掉前面的注释 PubkeyAuthentication yes //去掉前面的注释 AuthorizedKeysFile .ssh/authorized_keys //去掉前面的注释
改完后重启sshd就OK了,在这里要注意,必定要先测试密钥是否是能登陆,成功后在禁止密码登陆,否则很容易把本身墙外面
2. linux ssh密钥登陆和取消密钥登陆# 取消密钥登陆 #PubkeyAuthentication yes 把yes改成no PubkeyAuthentication no # 取消密钥登陆只须要把no改为yes PasswordAuthentication yes # 重启sshd服务 systemctl restart sshd.service3. 使用密钥方式登录Linux主机
这里以主机B为例,使用SecureCRT 8.5远程链接软件
先使用密码的方式登录主机B
执行以下命令来生成配对密钥:ssh-keygen -t rsa -b 3072
而后,在主机B上安装公钥:
cd /root/.ssh cat id_rsa.pub >> authorized_keys
为了确保链接成功,请保证如下文件权限正确:
chmod 600 authorized_keys chmod 700 ~/.ssh
编辑 /etc/ssh/sshd_config 文件,进行以下设置:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
留意 root 用户可否经过 SSH 登陆: PermitRootLogin yes
重启 SSH 服务:service sshd restart
而后把id_rsa.pub公钥文件下载到本地,打开SecureCRT软件,在Authentication一栏选中PublicKey,
输入主机IP,用户名,选中下载的公钥文件,而后链接登录。
以密钥方式登陆成功后,再禁用密码登陆: PasswordAuthentication no