码迷,mamicode.com
首页 > 其他好文 > 详细

ssh远程登录的操作以及原理,简单说说

时间:2015-03-10 01:42:40      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

// 以下记录基于   ubuntu:

ssh的简单认识:

安装ssh   sudo apt-get install ssh   // 假定当前配置的软件源可用

ssh服务器监听的端口默认为22.

ssh服务器的配置文件位于:/etc/ssh/sshd_config   // 也可以 cat 一下  /etc/ssh/ 下的其他文件。多逛逛无害,如果时间允许

登录远程主机的命令:   ssh user@remoteHost    // remotHost为远程主机的ip地址,或者域名


衍生的命令(远程拷贝)      scp /home/xiaocc/demo.war  stage@remoteHost:/var/tomcat/webapps/  // 该命令将本地的demo.war 文件拷贝到远程主机:  remoteHost 的stage用户的   /var/tomcat/webapps目录下

生成公钥和私钥匙的命令:

ssh-keygen -t rsa  // -t 后面跟上  rsa 或者dsa

生成的公钥和对应的密钥默认位于 ~/.ssh/

~/.ssh/id_rsa  // 私钥

~/.ssh/id_rsa.pub


同时加个命令   chmod 600 ~/.ssh/id_rsa        //仅对当前用户可读可写

==========================================

以上:可以满足基本干活的需要了。

接着,简单说说原理:

ssh 的客户端和服务器都会拥有一个公钥和对应的私钥。用公钥对一段数据进行加密,有且仅有对应的私钥能对该段数据解密,反之亦然。公钥会在网络上传播,但私钥不会在网络上传输。

登录方式1:基于远程主机的用户和密码登录

  1. 客户端  通过 ssh 命令请求登录 远程服务器

  2. 服务器 收到请求后,将自己的公钥发送给客户端

  3. 客户端利用收到的服务端的公钥对登录密码进行加密,将加密后的密码发送给服务器。

  4. 服务器利用自己的私钥对收到的密码进行解密,并且验证其密码,如果密码正确,允许该客户端登录。 

    // 客户端登录成功。    用  exit 命令退出登录。  登录超时 时间取决于服务器的配置。


登录方式2:基于客户端公钥的登录     //必须对服务器进行配置,并且使配置生效。

具体   cat /etc/ssh/sshd_config。

  1. 客户端将自己的公钥事先保存在服务器中,一般为   ~/.ssh/authorized_keys  中。 这就是为什么上司不用告诉我们远程主机的密码,只叫我们把  ~/.ssh/id_rsa.pub  发给他我们就能登录远程服务器干活了。。。

  2. 客户端 通过ssh 命令请求 登录远程服务器时,服务器将一段随机码发回给客户端。客户端用自己私钥对该随机串加密后发送到服务器。服务器利用该客户端的公钥解密之后即可完成认证。  

    //至于:为啥服务器端会知道,当前登录的客户端是否已经把公钥保存在本服务器中了? 这就是具体实现上的事情了。现在还没有去看具体的实现是怎样的。 如果有人知道,请多多赐教。


中间人攻击:

真对于第一种登录方式,

可能会有第三方截获ssh登录请求,并且将第三方自己的公钥发过来,客户端不知道收到的公钥是不是目的服务器的,就把远端的登录密码加密后发出去了,第三方用私钥解密之后就可以得到真正的远端服务器的密码。从而第三方再以客户端的身份登录到远程服务器。对服务器进行破坏。

// 突然想到一句话:请不要将钱转到陌生的声称电信,公安的银行卡中。

造成该问题的原因:

客户端不知道收到的公钥到底是不是由真正的目的服务器发来的。

这下好了,目的服务器得事先公布自己的公钥。当客户端收到远端服务器的公钥时,与目的服务器自己事先公布的公钥对比,

就可以知道来者何人了。

在linux中,第一次登录一个陌生的远端服务器时,会有这样的提示:

The authenticity of host ‘127.0.0.1 (127.0.0.1)‘ can‘t be established.

ECDSA key fingerprint is 50:76:f4:8e:eb:38:c6:e9:d5:5b:c7:49:77:a9:4c:b4.

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

//重要提醒:请不要将钱转到陌生的声称电信,公安的银行卡中。  哈哈,一样的道理。


当对一个远程主机进行了第一次登录之后,在客户端本身的  ~/.ssh/  目录下会生成:

know_hosts  // 好了,我记着这个仔了,他是我远方亲戚,信得过。

以后再登录这个远程服务器,就不会有上面的提示了。


======

个人的目前为止的理解,以上。





















ssh远程登录的操作以及原理,简单说说

标签:

原文地址:http://my.oschina.net/u/1466553/blog/384574

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!