原理

密码的方式的即时认证的方式 。而公私钥 是在服务器保存一份已经通过认证的加密串,登录时通过这个加密串去认证。

公钥是可以传播的,私钥只能在自己的本地

公私钥的工作原理, 可以参考这篇文章: SSH公钥登录(私钥认证)原理

生成 公私钥

有机器A,B。现想A通过ssh免密码登录到B。

ls -al ~/.ssh

检测 A主机下是否已经生成过 SSh key , 如果存在 id_rsaid_rsa.pub 的话,说明已经生成过 SSH key 了。可以直接下一步。 否则要先生成。

使用 ssh-keygen 命令 , your-email@example.com 替换为你的邮箱。

> ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.

命令行会提示让你指定秘钥的名称,按回车键将 SSH Key 保存到默认文件名即可:

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

如果要更改路径,这里要输入绝对路径,不然就出现在根目录 / 下了。(一般不要修改,默认路径最好)

接下来会询问你为 SSH Key 设置密码,按回车键即可,默认为空密码:

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

不输入,直接回车就是空密码了

这一步的密码一定要注意 。 设置为空密码,才能免密码登录, 否则就是要密钥的密码了。 有较多新手朋友烂在了这一步 。明明设置了密钥,却还是要输入密码。就是这个原因了。

可以都选择默认,一路 Enter 键即可.

这个时候如果我们再使用:

> ls -al ~/.ssh
id_rsa id_rsa.pub known_hosts

SSH 秘钥的两个文件:

id_rsa —— SSH 秘钥的 私钥 (Private Key)

id_rsa.pub —— SSH 秘钥的 公钥 (Public Key)

B 主机设置公钥

把A机下的/root/.ssh/id_rsa.pub 复制到B机的 /root/.ssh/authorized_keys文件里,先要在B机上创建好 /root/.ssh 这个目录。

两种方式:

一:

ssh-copy-id root@192.168.1.181

二:用scp复制。

[root@A ~]# scp /root/.ssh/id_rsa.pub root@192.168.1.181:/root/.ssh/authorized_keys
root@192.168.1.181's password:
id_rsa.pub 100% 223 0.2KB/s 00:00

由于还没有免密码登录的,所以要输入一次B机的root密码。

需要特别注意的是:B主机的.ssh文件的所有者要是root,如果不是要改:

chown -R root:root .ssh

同时,B主机的authorized_keys文件,要是600权限的,如果不是,也要改:

chmod 600 authorized_keys

A主机使用公钥免密登录B主机的root用户

[root@A ~]# ssh -l root 192.168.1.181

第一次登录是时要你输入yes。

现在A机可以无密码登录B机了。

小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)

想让A,B机无密码互登录,那B机以上面同样的方式配置即可。

参考文章: https://blog.csdn.net/qq_31016531/article/details/78850162

最新文章

  1. Jquery操作下拉框(DropDownList)实现取值赋值
  2. JavaScript 的同源策略
  3. ace 读取excel
  4. Linux zip解压/压缩并指定目录
  5. JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法(转)
  6. 系统级性能分析工具 — Perf
  7. android 案例:从另一个activity选择信息并获取返回值
  8. 信息安全实验三:privilege-separation
  9. Android中Bitmap, Drawable, Byte之间的转化
  10. C语言编码风格_集锦_1
  11. IBM与麻省理工学院联合建立AI实验室 承诺投资2.4亿美元
  12. toString()方法细节
  13. Rust语言之HelloWorld Web版
  14. Java中的基本类型和引用类型变量的区别
  15. JS 格式化日期时间
  16. [RTC]系统和RTC的时间保持一致
  17. form表单的默认提交行为
  18. cal命令详解
  19. 【翻译】Voidbox: Docker on YARN
  20. Session机制一(基础知识点)

热门文章

  1. NCE L6
  2. 容器监控工具WeaveScope
  3. Winfrom 减少控件重绘闪烁的方法
  4. Microsoft.EntityFrameworkCore.Tools 相关命令
  5. GitHub当作私密的版本控制系统远端版本库私有化
  6. C语言编写程序的大小端问题
  7. Vue中import from的来源--省略后缀与加载文件夹
  8. 《手把手教你构建自己的 Linux 系统》学习笔记(5)
  9. Bilibili手机端下载的Download文件批量转换为MP4软件【Bilibili_DownVideoToMp4】原创发布
  10. 第2章 在 HTML中 使用 JavaScript