1. SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。简单说,SSH是一种网络协议,用于计算机之间的加密登录。

最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY。

SSH之所以能够保证安全,原因在于它采用了公钥加密。

过程:

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

(2)用户使用这个公钥,将登录密码加密后,发送回来。

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

中间人攻击与解决办法:

中间人收到远程主机公钥之后,冒充远程主机将伪造的公钥发给用户,用户将很难辨别真伪,用户用伪造的公钥加密时会被中间人截获,会出现安全漏洞。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,是自己签发的。

解决办法:

如果是第一次登录对方主机,系统会出现下面的提示:

      $ ssh user@host
      The authenticity of host 'host (12.18.429.21)' can't be established.
      RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
      Are you sure you want to continue connecting (yes/no)?
    表示无法确认host主机的真实性,只知道它的 公钥指纹是***,接受输入yes?
    所谓"公钥指纹",是指公钥长度较长(这里采用RSA(Rivest-Shamir-Adleman一直非对称加密算法),长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d以简化对比。远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。

输入yes后,出现:

Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
    然后,会要求输入密码。如果密码正确,就可以登录了。
    当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

2. 用法

SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
  $ ssh user@host

如果本地用户名与远程用户名一致,登录时可以省略用户名。
  $ ssh host

SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
  $ ssh -p 2222 user@host

上面这条命令表示,ssh直接连接远程主机的2222端口。

3. SSH key 登陆

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

用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:

      $ ssh-keygen

其中一步是私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。

运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

这时再输入下面的命令,将公钥传送到远程主机host上面:
  $ ssh-copy-id user@host

好了,从此你再登录,就不需要输入密码了。

如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。

  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys

然后,重启远程主机的ssh服务。

  // ubuntu系统
  service ssh restart

  // debian系统

  /etc/init.d/ssh restart

4. 其他ssh问题解决

a. 使用git gui生成公钥私钥:

git Gui>Help>Show ssh key > generate

产生的keys存储在Users/Username/.ssh文件夹中

b. win10使用git clone ssh://user@host/**/**.git 的时候报错no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

解决: 在windows Users/Username/.ssh 中添加一个名为config的文件,中间填上

Host infrashdev003.sh.intel.com
    KexAlgorithms +diffie-hellman-group1-sha1
参考链接:

How to Fix UNPROTECTED PRIVATE KEY FILE - SSLHOW

SSH介绍和使用,SSH key教程相关推荐

  1. 通信 / SSH介绍和使用,SSH key教程

    一.SSH 1.概述 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定.利用 SSH 协议可以有效防止远程管理过程中的信息泄露 ...

  2. SSH介绍与神器Tabby

    文章目录 一.什么是SSH 二.SSH的原理 三.SSH的安全性 中间人攻击 解决 四.SSH的使用 Linux Windows SSH工具的总结 五.Tabby 1. 根据自己的系统下载相应的Tab ...

  3. ssh 安全配置 以及ssh key 认证登录

    一.什么是 SSH ? SSH全称(Secure SHell)是一种网络协议,顾名思义就是非常安全的shell,主要用于计算机间加密传输.早期,互联网通信都是基于明文通信,一旦被截获,内容就暴露无遗. ...

  4. 如何在termius安装linux窗口,termius怎么使用?termius for mac使用ssh命令登陆服务器的方法教程...

    termius ssh 使用步骤是什么?mac系统一般都自带了命令行工具,但是在使用上面还不够方便.而mac版本Termius图形化命令行工具扩展了命令行工具的功能,那么,termius怎么使用呢?下 ...

  5. Xshell配置ssh使用密钥公钥(publice key)登录

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ultraera.blog.51cto.com/6640392/1671351 大 ...

  6. ssh 介绍 和使用 程序不挂起

    目录 SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineer ...

  7. git 生成ssh key_ubuntu git生成ssh key (公钥私钥)配置github或者码云

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git confi ...

  8. SSH连接时出现Host key verification failed的原因及解决方法

    SSH连接时出现Host key verification failed的原因及解决方法 参考文章: (1)SSH连接时出现Host key verification failed的原因及解决方法 ( ...

  9. 介绍3种ssh远程连接的方式

    摘要:SSH(安全外壳协议 Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,用于在网络中实现客户端和服务端的连接,典型的如我们在本地电脑通过 SSH连接远程服务器. ...

最新文章

  1. Linux环境ddd安装与使用
  2. python中的object是什么意思_Python object类中的特殊方法代码讲解
  3. 【简便解法】1084 外观数列 (20分)_24行代码AC
  4. Easy Problem 3 求长方形的面积
  5. 关于'$ router' 的 undefined问题 ,是不是很痛点?!
  6. 用sublime Text2来开发ruby on rails项目
  7. python应用系列教程——python操作office办公软件word
  8. shell-6:shell中的计算$((1+1))
  9. opencv图像分析与处理(7)- 频率域滤波的基础公式、步骤与C++实现
  10. IntelliJ IDEA库存在却报错找不到的解决办法
  11. paip.分成系统会员推广分销系统的设计
  12. Qt 二维码文件传输工具
  13. 新语法之CORRESPONDING
  14. Only fullscreen activities can request orientation异常解决
  15. 网络版的知乎点赞问题~
  16. 京东阿里都已入局 顺丰在即时配送的胜算有多大?
  17. js字符串常见操作方法
  18. 贝叶斯例题(一)先验分布与后验分布
  19. DriodDeveloper 技术干货大汇总
  20. 智慧灯杆基于边缘计算网关的单灯远程控制功能

热门文章

  1. SurfaceView实战打造农药钻石夺宝
  2. 英语中的国籍,国家和地区
  3. RAD Studio 10.4.1 Sydney 新增与改进内容介绍
  4. 论文查重工具知多少?
  5. 自己组装电脑 ,各价位可行的配置-----2018年
  6. il文件转c 语言,[工具]IL Mapper2(C# - IL 转换器)
  7. 计算2000年1月1日到2020年1月1日相距多少天 java
  8. BackhaulRateDlWLAN 和BackhaulRateUlWLAN WLAN回程线路上行和下行带宽
  9. java lru lfu_内存淘汰机制——LRU与LFU
  10. Java文件上传大杀器-绕waf(针对commons-fileupload组件)