1. Linux主机免密码使用密钥登陆

这里假设主机A(192.168.0.113)用来远程连接主机B(192.168.0.186)

在主机A上执行如下命令来生成配对密钥:ssh-keygen -t rsa -b 3072

-t参数指定加密算法为rsa,-b参数指定密钥长度,可以是1024、2048、3072等等,位数越长,被暴力破解所需的时间越久

遇到提示回车默认即可,公钥被存到用户目录下.ssh目录,比如root存放在:/root/.ssh/id_rsa.pub

.ssh 目录中的 id_rsa.pub 文件传输到主机B

在主机A中执行如下命令和主机B建立信任,例(假设主机B的IP为:192.168.0.186):

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上执行如下命令

cat id_rsa.pub >> /root/.ssh/authorized_keys

id_rsa : 生成的私钥文件

id_rsa.pub : 生成的公钥文件

know_hosts : 已知的主机公钥清单

如果希望ssh公钥生效需满足至少下面两个条件:

  1. .ssh目录的权限必须是700
  2. .ssh/authorized_keys文件权限必须是600

1.1 主机B取消密码登陆

# 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.service

3. 使用密钥方式登陆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

最新文章

  1. jsp中出现onclick函数提示Cannot return from outside a function or method
  2. 安装了VS2010 sp1 后再安装ASP.NET MVC 3.0的问题
  3. bootstrap-5
  4. [转] - linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错
  5. Form1是父,form2是子,2的出现(覆盖在1的上面)不耽误1的操作
  6. C#大纲
  7. [Tommas] 测试用例覆盖率(二)
  8. HW7.9
  9. iOS学习之NSBundle介绍和使用
  10. JavaScript闭包函数的写法
  11. 在strings.xml中定义html标签
  12. 分布式数据库TiDB的部署
  13. SQL的各种连接(cross join、inner join、full join)的用法理解
  14. (一〇四)使用Xcode6创建framework动态静态库
  15. SQL优化 MySQL版 -分析explain SQL执行计划与Type级别详解
  16. python+selenium自动测试之WebDriver的常用API(基础篇二)
  17. gcc/g++
  18. C++前置声明
  19. Linux下idea选择tomcat server 报错Warning the selected directory is not a valid tomcat home
  20. MySQL数据分组GROUP BY 和HAVING

热门文章

  1. Mybatis 结果映射下划线转驼峰
  2. R_Studio(贷款)数据规范化处理[最小-最大规范化、零-均值规范化、小数定标规范化]
  3. JSP之Bean
  4. Dark 类与对象
  5. log4j.properties 文件,放在 src 下
  6. ColorPicker 颜色选择器
  7. DatePicker 日期选择器
  8. 阶段3 2.Spring_01.Spring框架简介_03.spring概述
  9. Java学习之==>集合体系(待续。。)
  10. 删除delphi组件TStringlist中的重复项目