每天一个Linux命令:ps命令

ssh原理和运用(一):远程登录
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

SSH是每一台Linux电脑的标准配置。

随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。

SSH具备多种功能,可以用于很多场合。有些事情,没有它就是办不成的。本文是我的学习笔记,总结和解释了SSH的常见用法,希望对大家有用。

一、什么事SSH?

简单说,SSH是一种网络协议,用于极端及之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途拦截,密码也不会泄露。

最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者T阿土 Ylonen设计了SSH协议,将登陆信息全部加密,成为了互联网
安全的一盒解决方法,迅速在全世界获得推广,目前已经成为了Linux系统的标准配置。

需要指出的是,SSH是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的是现实OpenSSHell,它是自由软件,应用非常广泛。

此外,本文只讨论SSH在Linux Shell中的用法。如果要在Windows系统中SSH,会用到另一种软件Putty,这需要另文介绍。

二、最基本的用法

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

ssh user@host

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

ssh host

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

ssh -p 2222 user@host

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

三、中间人攻击
SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:
①远程主机收到用户的登录请求,把自己的公钥发给用户。
②、用户使用这个公钥,将登录密码加密后,发送回来。
③、远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,
将伪造的公钥发给用户,那么用户很难辨别真伪。
因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。
再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。
这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

SSH协议是如何应对的呢?

四、口令登录

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

ssh user@host

The authenticity of host 'host (12.18.429.21)' can't be established.

RSA key fingerprint(公钥指纹) is 98:2e:d7:e0??9f:ac:67:28:c2:42:2d:37:16:58:4d.

Are you sure you want to continue connecting (yes/no)?

所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。
上例中是98:2e:d7:e0??9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。

很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。

假定经过风险衡量以后,用户决定接受这个远程主机的公钥。

Are you sure you want to continue connecting (yes/no)? yes

系统会出现一句提示,表示host主机已经得到认可。
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

然后,会要求输入密码。
Password: (enter password)

如果密码正确,就可以登录了。

当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。
下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

SSH下authorized_keys, id_rsa, id_rsa.pub, known_hosts作用

一、known_hsots

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。
如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况。

二、authorized_keys

1、就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作。
2、模型分析

假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

要达到的目的:

A机器ssh登录B机器无需输入密码;
加密方式选 rsa|dsa均可以,默认dsa
单向登陆的操作过程(能满足上边的目的):
1、登录A机器。
2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub 。
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys。
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )

双向登陆的操作过程:

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:
2、两个节点都执行操作:#ssh-keygen -t rsa
然后全部回车,采用默认值
3、这样生成了一对密钥,存放在用户目录的~/.ssh下。
将公钥考到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。

二、id_rsa、id_rsa.pub

1、SSH是什么

SSH为Secure Shell的缩写,用于计算机之间的远程加密登录。134395

转载于:https://www.cnblogs.com/2018-05-9-ygk/p/10254721.html

ssh无输入密码登录问题相关推荐

  1. ssh无密登录配置详解(hadoop集群搭建)

    ssh无密登录原理 Hadoop集群搭建时,配置ssh是给yarn用的,最好先清空.ssh目录下的文件,再生成密钥,在节点中含有resourcemanager的服务器(有多个resourcemanag ...

  2. 016 在大数据中,SSH无密钥登录

    一:概述 1.关于ssh ssh是一种安全协议. 会生成一对公钥和私钥. 2.问题的由来 3.解决方式 将生成的公钥发送到远程的机器上. 4.位置 主目录下的.ssh文件下. 二:在伪分布式下的操作 ...

  3. SSH无密登录原理及配置方法

    1.ssh无密登录原理 看网上都不太清除,就自己画了一张. 2.ssh配置 1. 配置ssh (1)基本语法 ssh另一台电脑的ip地址 (2)ssh连接时出现Host key verificatio ...

  4. Hadoop集群SSH无密登录

    Hadoop集群SSH无密登录 1.原理及操作 1.1在登录用户家目录的.ssh下操作 1.2生成公钥和私钥 1.3将公钥拷贝到要免密登录的目标机器上 2.无密配置(注意命令执行位置!) 2.1在配置 ...

  5. ssh 无密登录(两行命令即可)

    1.电脑生成自身的  钥匙  和  公匙,输入命令一 ssh-keygen 2.执行完后,在  ~/.ssh  文件夹内出现两个文件 3.用户名  和  ip   换成自己的就行了.有几台机器就输入几 ...

  6. SSH无密登录配置(学习笔记3)

    SSH 无密登录配置 在home目录下 ls -al 显示隐藏文件 进入 .ssh 代码执行

  7. 【Hadoop完全分布式】SSH 无密登录配置

    SSH 无密登录配置 1. 配置 ssh 2. 无密钥配置 3. .ssh 文件夹下(~/.ssh)的文件功能解释 1. 配置 ssh (1)基本语法 ssh 另一台电脑的 IP 地址 (2)ssh ...

  8. Linux系统:SSH无密登录配置

    测试环境: Linux系统镜像 : CentOS-7-x86_64-Minimal-1804.iso 虚拟机版本:  VMware-workstation-full-15.5.0-14665864 效 ...

  9. SSH 无密登录配置

    生成公钥和私钥 [root@hadoop101 ~]# ssh-keygen -t rsa 然后敲(三个回车),就会生成两个文件 id_rsa(私钥).id_rsa.pub(公钥 公钥拷贝 将公钥拷贝 ...

最新文章

  1. 模板引擎:VelocityFreeMarker(转)
  2. 百度地图经常崩溃的问题
  3. STM32L152RC 在keil4中使用printf()和scanf() 函数
  4. 如何判断文本文件的编码格式?
  5. [转]数据结构KMP算法配图详解(超详细)
  6. ThreadLocal T类的说明 转载 原作者 lujh99
  7. C语言字符串中运算符,c语言字符串中找到一个运算符,怎样实现运算
  8. 车油表灯亮了,还能开多久?
  9. 开源博客网站搭建之Catfish
  10. [海康威视]-门禁设备告警布防代码C#实现
  11. 集团企业数据信息系统建设方案
  12. navcat定时备份mysql_Navicat for MySQL定时备份数据库及数据恢复
  13. Qt读写Excel--QXlsx设置字体格式、样式8
  14. opensuse12.2 KDE 使用环境配置
  15. PHP对接语音验证码接口代码示例
  16. es数据库查询API
  17. [单片机框架] [kv_sys] 实现一个简易KV键值系统(最终版)
  18. 【机器学习之向量求导】分子布局 分母布局
  19. 2016-ICLR-Order Matters- Sequence to sequence for sets
  20. wine安装迅雷、qq2009

热门文章

  1. 来酷新生态 抢滩元宇宙:首发数码类数字藏品
  2. CNVD原创漏洞证书总结
  3. 【NOIP%你题】【线性筛】dun题解
  4. python培训报价
  5. 华为云-容器引擎CCE-基本概念
  6. .dll文件(DLL文件)
  7. ACW 835. Trie字符串统计
  8. 算法模板ACW(更新中)
  9. sql语句-create table XXX select 和 insert into XXX select 语句的使用
  10. 2018数据技术嘉年华-河南站7.13相约!