ssh协议和tcp/ip 协议一样非常的重要,那么,如何使用这个ssh呢?这个协议到底有什么用处呢?

一,

ssh协议是什么

ssh是secure SHell的简写,意思为安全的shell,中文也叫安全的外壳协议(是不是比较喜感的一个名称?),那,既然都是shell了,自然是有shell的那些特征啦。

SSH 主要由三部分组成:

传输层协议 [SSH-TRANS]

提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。

用户认证协议 [SSH-USERAUTH]

用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。

连接协议 [SSH-CONNECT]

将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。

ssh的最主要的作用就是可以远程登陆服务器,使得距离不能成为我们的物理限制。

二,

ssh的实际应用

ssh在很多运维工具中都使用到了,比如,常用的xshell,secure CRT, 这些运维工具都是通过ssh协议来远程登陆服务器的哦。

ssh还有跳转登陆服务器的功能,在集群的内部经常会使用ssh登陆其它的服务器。

ssh还可以应用在脚本内,使得管理大批量的服务器并完成一些简单的自动化工作成为可能。但,ssh通常是点对点的登陆,因此,Apache开发出了基于Python的ansible 以及其它组织开发的saltstrack等等大批量自动化运维工具。

三,

ssh免密登陆的配置

(1) 通常的带密码验证的ssh登陆

端口问题:

这里需要提醒各位,ssh默认的端口是22,但,默认的端口并不是非常安全的,因此,在实际的生产活动中通常是会更改sshd服务的端口,也就是默认端口更改为自定义的端口了。

通常我们要ssh远程登陆一个服务器,命令是这样的:

ssh 192.168.0.16
执行命令后,会要求输入192.168.0.16服务器上的root用户的密码进行验证
如果输入正确,就登陆192.168.0.16这个服务器啦。

那么,上面的写法是省略了很多东西的,其实完整的ssh命令是如下的:

ssh -p 22 root@192.168.0.16
ssh -p 22 zsk@192.168.0.16这个命令要说明的是,如果sshd服务是使用的默认端口,-p 22 可以省略
如果是想要远程登陆后,就是root用户,那么就在ip前加root@
如果是想要远程登陆后,是普通用户,那么就在ip前加普通用户名@
第二条命令就是需要验证普通用户zsk的密码啦。

当我们回车后,将会要求输入目标主机的用户和密码进行验证,比如上面这条命令是要求验证 192.168.0.16这个远程主机的root用户的密码,如果密码错误,将会要求重新输入,直到三次密码输入错误,关闭ssh连接。

(2)

sshd服务端口自定义更改

vim /etc/ssh/sshd_config
找到以下内容:
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 2233将port前的注释去掉,后面的数字写一个自己喜欢的65525以内的未被占用的数字即可。然后保存该文件。
重启sshd服务,重启命令为:
systemctl restart sshd
命令执行完毕后,别的服务器要ssh这台服务器就必须是下面这个命令了:
ssh -p 2233 192.168.0.16

(3)

前面都是一些基础的科普知识,现在开始免密配置啦。(假设,是两个服务器之间的免密,192.168.0.16和192.168.0.17,都是配置root用户的免密哦,sshd服务端口都已更改为2233啦)

  1. 在192.168.0.17执行ssh-keygen -t rsa ,然后一路回车
  2. 在192.168.0.17****执行 ssh-copy-id -p 2233 root@192.168.0.16 输入16的正确的root密码验证。这个是远程ssh免密
  3. 在192.168.0.17执行 ssh-copy-id -p 2233 root@192.168.0.17 输入本机17的正确的root密码进行验证。这个是本地ssh免密
  4. 在192.168.0.16服务器上重复上面的三步,只是密码验证的分别是本地密码和远程密码而已啦。

(4)

免密的原理揭示:

[root@master ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DoLRfKE6PzfnFviMYbTGcfdjjCnOAVYDnIQjINzVB28 root@master
The key's randomart image is:
+---[RSA 2048]----+
|+.. .==+.        |
|...+o.oo+.       |
|  ..+....E       |
|   + .= o .      |
|  + .+.*S. =     |
|   o .Bo+ o =    |
|    oooBo+ . .   |
|     o.+*        |
|       ..        |
+----[SHA256]-----+

以上需要注意,在提示输入密码的时候一定要回车,不要输入密码。也就是在提示Enter passphrase (empty for no passphrase)的时候回车,然后在下一个提示仍然回车,不要输入任何密码。

ssh-keygen 这个命令会在/root/.ssh/目录下生成两个文件,一个是公钥 id_rsa.pub 一个是私钥 id_rsa。

这里要说一个ssh的小秘密了,我们查看私钥,会发现即使我们在每个服务器生成的时候没有输入密码,也就是空密码,私钥的内容都是不一样的。当然,公钥的内容也是不一样的,因此,不用纠结啦,即使生成公私钥的时候是空密码,仍然是十分的安全啦。

ssh-copy-id 这个命令是将a服务器的公钥传递到b服务器内,这个我们查看免密配置后生成的authorized_keys就可以看到了。该文件的路径和公私钥是在一个目录下的哦。

[root@master ~]# cat ~/.ssh/authorized_keys
ssh-rsa
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvRg61Q+wReTj/8zAykY51SuTWI3Agptsq0KNtNjHlK/JyNvcTmyMQxLeEFldJEC35/psDsuv2/shFM38zn2BYm8XSVgQITnpuNXIqq5R6lMhLWIO9ehfkuuGKakk91n9szrlbkpCWJeLDPCc8qE8esmEX4xedpk913fOtXa6AuTzZV07XfMmWJXYtco9F12rybjA0hhdku/vMvVRfLnlI6/uPeC7dLI1KuG4UfTGaEAD+rkO/3Ti4W2f44YPB36h2LlnqvC/oprW9mNLNkRoMLDktWjEI+TXqUfNr4OjSaph12KuVLxWmG/Sd6WQjo57wW5Px4RIh47PV//p2e32T root@slave1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6AWczH2EgetzltgPaqtU5lDVR/vPrKPlOSmiAx1gi14r0QviZ/fFrt1RDx7x7ptbPBpJqPLbLck2PBIEc8s56fVUsLNCo26Qny+0/WsmFcRfx5sC09teRLuK74kHX3XrbD8TxCndGVWWhgQk8ACIOHswr47FrZFK6l0wPQFOlVSnqmZJ2z7wdhOIZVDb0dyOkdISqNaN4Q9C/9sqdbOwGnD8ryLaXSUmLYf1epiBJ2/0cheua3DXBQW4WoR2pDUXJoBWGTTUPPd+UHIvdRRmp0nqmc9VJqDQ5OkQs2R43ag67lwD62gPmNnh7hDb+bWOjGrr1xg2ui8Puz04C093f root@master

可以看到,两个服务器的公钥内容合并到这个文件内了。

(5)免密登陆的取消

这个就非常简单了,只是注意别删除错了就可以啦

???????rm -rf ~/.ssh/*

把前面 ssh-keygen 等等命令生成的文件删除就可以啦,非常的简单。

科普扫盲---ssh免密登陆(ssh的一些小秘密)相关推荐

  1. ssh免密登陆失败原因总结(Linux)

    转载自  ssh免密登陆失败原因总结(Linux) 1. SSH公钥认证(免密码)配置 登录到本机服务器A,切换到响应的操作系统用户,执行命令,生成秘钥文件[按照提示直接回车] ssh-keygen ...

  2. ssh免密登陆机制示意图

    ssh免密登陆机制示意图

  3. 批量ssh免密登陆远程主机

    案例 1.中心主机以root执行ssh-keygen -t rsa 在/root/.ssh/下生成id_rsa(私钥); id_rsa.pub(公钥); cat /root/.ssh/id_rsa.p ...

  4. start-all.sh启动设置ssh免密登陆还总是提示输入密码的解决办法

    [1]问题描述: start-all.sh启动设置ssh免密登陆还总是提示输入密码:已经配置了ssh免密码登陆,当是每次输入start-all.sh还是总是提示输入密码: [2]解决办法:这个是文件权 ...

  5. SSH免密登陆节点互信

    一.配置环境 master:192.168.70.135 node:   192.168.70.136 二.在对应节点添加所有节点的hosts解析 分别在两台主机上编辑/etc/hosts文件 vim ...

  6. 基于三台虚拟机配置ssh免密登陆

    目录 一.前提准备 二.配置ssh免密登陆(Hadoop102,hadoop103,hadoop104) 三.配置三台免密登陆 一.前提准备 qian ti z bqian ti zqian tiqi ...

  7. Git 详细教程之五:SSH 免密登陆 GitHub

       由于每次 Git 对远程库 GitHub 进行推送(push)等操作时都需要进行登陆验证才可以进行,比较麻烦.本篇博客提供了一种新的链接方式:『Git 详细教程之五:SSH 免密登陆 GitHu ...

  8. 第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置.集群启动 第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置 ...

  9. linux ssh免密登陆远程服务器

    10.170.1.18服务器免密登录到10.170.1.16服务器 首先登入一台linux服务器(10.170.1.18),此台做为母机(即登入其他linux系统用这台做为入口):执行一行命令生成ke ...

最新文章

  1. 【jquery模仿net控件】简单的datalist控件更新,及其简单应用
  2. Luogu4099 HEOI2013 SAO 组合、树形DP
  3. linux图形模式切换用户,Linux的图形模式和文本模式以及单用户模式切换
  4. 6.7级地震!北海道数据中心陷最长停电危机!
  5. 5分钟理解一致性哈希算法
  6. python docx runs_别再问我Python怎么操作Word了!
  7. 接口隔离原则_设计模式的三大分类及六大原则
  8. 配置源码管理工具(2)
  9. 【Makefile由浅入深完全学习记录8】条件判断语句
  10. Web Service 客户端,调用服务方法
  11. CMM3 正式评估全过程
  12. python——numpy——roll()函数
  13. 74CMS 3.0任意文件写入漏洞
  14. HC-SR505人体红外报警系统
  15. 【Android+Kotlin】自适应CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout与Palette
  16. 注册微信公众号需要哪些材料?
  17. ubuntu下mongodb及其可视化工具robomongo安装
  18. 分数拆分(简单数学)
  19. 仿牛客论坛项目(5)
  20. linux删除del后缀文件,linux删除命令_linux下如何删除一个文件?

热门文章

  1. JavaSE——IO流
  2. CSP-J/S2022游寂寞记
  3. Explain是什么?Explain能干嘛?
  4. ubuntu 主分区扩容
  5. python报错就一定是有错吗_Python-什么是错误的幻数错误?
  6. java分页查询参数封装
  7. 明日之后什么服务器物品最便宜,明日之后:玩家晒物价最低的服务器,看到uzi标价,观众直接酸了...
  8. Ubuntu 安装及基本配置(显示、镜像源、网络配置)
  9. 炫云全新支持优化渲染质量了
  10. 用python爬取交大图书馆图书信息