1.什么是SSH登录

SSH是一种网络协议,用于计算机之间的加密登录。

相比传统的账户密码登录,SSH提供了一种更便捷安全的登录方式。

2.SSH登录流程

登录操作如下

ssh user@host

SSH之所以能保证安全,是因为它采用了公钥加密。

整个流程如下:

(1)远程主机收到用户的登录请求,将自己的公钥发给用户

(2)用户使用这个公钥,将登录密码加密后,发送给远程主机

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录

3.中间人攻击

SSH登录本身是安全的,问题在于,如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,

那么用户很难辨别真伪。因为不像https,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

攻击者插在用户和远程主机之间,用伪造公钥,获取到用户的登录面后,再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了,

这就是著名的“中间人攻击”

4.口令登录-公钥加密(用户端),私钥解密(远程主机)

如上图所示,第一次登录时,会提示用户

The authenticity of host '121.43.230.217 (121.43.230.217)' can't be established.
ECDSA key fingerprint is SHA256:NfXOYhYDaY7cs57XoMqAS+5D+rG8mKTumqyo+8SCO9o.
Are you sure you want to continue connecting (yes/no)?

意思是无法验证用户的公钥,是否正确,询问用户是否要继续。

ECDSA key给出了远程主机公钥的SHA256编码过的值,一般在远程主机的网站会告示公钥的值,

用户可以将这个公钥和网站上的公钥进行比对,正确则表明是远程主机。

输入yes之后,系统会将公钥加入到已知的主机列表,如下所示,已知列表中的主机,下次不会再询问。

Warning: Permanently added '121.43.230.217' (ECDSA) to the list of known hosts.

5.公钥登录-私钥加密(用户端),公钥解密(远程主机)

使用密码登录,每次都必须输入密码,非常麻烦,好在SSH还提供了公钥登录,可以省去输入密码的步骤。

公钥登录的流程如下:

用户将自己的公钥放在远程主机上,登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。

远程主机用实现储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

这种方式要求用户提供自己的公钥,如果没有,可以使用ssh-keygen生成一个:

ssh-keygen

运行之后,会在/root/.ssh/目录下,分别生成公钥和私钥:id_rsa.pub和id_rsa

输入以下命令,将公钥传送到远程主机,公钥会添加到远程主机/root/.ssh/authorized_keys文件中,公钥登录的设置就完成了。

ssh-copy-id user@host

SSH登录详解的更多相关文章

  1. linux ssh使用深度解析(key登录详解)

    linux ssh使用深度解析(key登录详解) SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task ...

  2. SSH免密登录详解

    SSH免密登录详解 SSH(Security Shell)安全外壳协议,是较为可靠的,专为远程登录会话和其他网络服务提供安全保证的协议. ​ 对于传统的网络服务程序(例如,FTP,Telnet等)来说 ...

  3. 【转】SSH服务详解

    [转]SSH服务详解 第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Gro ...

  4. SSH命令详解2

    ssh命令详解     目录         前言     一.ssh命令         1.Ssh参数解释         2.如何连接远程主机         3.利用Xstart 在windo ...

  5. (转)SSH服务详解

    SSH服务详解 原文:http://www.cnblogs.com/clsn/p/7711494.html 第1章 SSH服务1.1 SSH服务协议说明SSH 是 Secure Shell Proto ...

  6. Bmob第三方登录详解

    Bmob第三方登录详解 Bmob 第三方登录 简介 本文主要介绍新浪微博,QQ,微信的登录接入以及如何配合BmobSDK中的第三方登录功能实现第三方登录. 在使用之前请先按照快速入门创建好可以调用Bm ...

  7. ssh配置详解及公私钥批量分发

    第一:ssh配置文件详解 第二:ssh公私密钥的生成 第三:ssh公钥分发之一:ssh自带工具ssh-copy-id工具分发 第四:ssh公钥分发之二:编写sshpass脚本批量分发 第五:ssh公钥 ...

  8. python通过socket实现多个连接并实现ssh功能详解

    python通过socket实现多个连接并实现ssh功能详解 一.前言 上一篇中我们已经知道了客户端通过socket来连接服务端,进行了一次数据传输,那如何实现客户端多次发生数据?而服务端接受多个客户 ...

  9. 前后端分离,简单JWT登录详解

    前后端分离,简单JWT登录详解 目录 前后端分离,简单JWT登录详解 JWT登录流程 1. 用户认证处理 2. 前端登录 3. 前端请求处理 4. 后端请求处理 5. 前端页面跳转处理 6. 退出登录 ...

随机推荐

  1. ios中Pldatabase的用法(2)

    @implementation AppGlobal static NSString* strHostName; static NSString* strVersion; static PLSqlite ...

  2. iOS如何在iTunes网站查看并下载APP的dsym文件

    有时需要拿到app的dsym符号表文件,恰巧本地的构建版本文件已经不在了,那么我们还可以在iTunes那边获取到. 步骤不复杂: 1.登陆itunes网站 https://itunesconnect. ...

  3. 简单的Java串口通讯应答示例

    java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程. package com.garfield. ...

  4. Weex开发之路(1):开发环境搭建

    一.Weex介绍 Weex是阿里巴巴在2016年6月份对外开源的一款移动端跨平台的移动开发工具,Weex的出现让我们的应用既有了Native的性能和H5的动态性,只要通过前端JS语法就能写出同时兼容i ...

  5. codeblocks编译pthread问题

    默认的编译选项是没有pthread的,所以要自己添加: 参考:http://hi.baidu.com/u_soa/item/9d6cc40b7e9d76eb3499024d 错误: undefined ...

  6. arping 帮助——翻译

    [root@localhost ~]# arping --helparping: invalid option -- '-'Usage: arping [-fqbDUAV] [-c count] [- ...

  7. Kickstart无人值守安装[转载]

    导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装系统===>一个服务器DV ...

  8. iphone3g 蜂窝数据有效设置

    iphone3g 蜂窝数据有效设置 蜂窝数据     APN cmnet/空     用户名 空     A密码 空彩信(默认为空,需要控制的话,可以设置)     APN cmwap/空     用 ...

  9. React(0.13) 定义一个动态的组件

    1.因为jsx将两个花括号之间的内容渲染为动态值,只需要引用对应的变量即可 <!DOCTYPE html> <html> <head> <title>R ...

  10. 【Smali】Smali文件的动态调试

    1.简介 smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码.下载地址为:https://github.com/Jesus ...