ssh连接原理介绍( 无密码连接登录的原理)

SSHSecure  Shell)一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x2.x、(SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上,OpenSSH 2.x同时支持SSH 1.x2.x)。服务端是一个守护进程(demon),他在后台运行并响应来自客户端的连接请求,一般是ssh进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证)

只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到中间人这种方式的攻击。

第二种级别(基于密匙的安全验证)

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密质询challenge)并把它发送给客户端软件。客户端软件收到质询之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令,不仅加密所有传送的数据,而且中间人这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。

     

建立ssh连接时,不提供密码就能够同远程系统建立连接,其认证协议基础是一对专门生成的密钥,分别叫做 专用密钥和公用密钥。密钥是基于不同的加密算法生成的,目前常用的是一对互补的数字式密钥的RSA DSA 认证协议来认证用户。

Rsadsa是两种常见的非对称加密算法,详细介绍:http://security.zdnet.com.cn/security_zone/2008/0612/922185.shtml
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;DSADigital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);此外还有ECCElliptic Curves Cryptography):椭圆曲线密码编码学。

 

 

引自网络:

生成SSH密钥过程:
1.
查看是否已经有了ssh密钥:cd ~/.ssh
如果没有密钥则不会有此文件夹,有则备份删除
2.
生存密钥:

$ ssh-keygen -t rsa -C “ou@gmail.com”
3个回车,密码为空。


Your identification has been saved in /home/tekkub/.ssh/id_rsa.
Your public key has been saved in /home/tekkub/.ssh/id_rsa.pub.
The key fingerprint is:
………………

 

最后得到了两个文件:id_rsaid_rsa.pub


3.
添加密钥到sshssh-add 文件名
需要之前输入密码。
4.
github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。

 

 

 

 

 

 

 

 

Do you want tologin other's host without input password?To do as following steps: (Linux toLinux)

 

First:

[root@host127~]# ssh-keygen -t rsa

this commandwill generating public/private rsa key pair.

Youridentification has been saved in /root/.ssh/id_rsa

Your public keyhas been saved in /root/.ssh/id_rsa.pub

 

 

second:

[root@host127~]# scp /root/.ssh/id_rsa.pub root@192.168.10.184:/root

[root@host127~]# ssh 192.168.10.184

[root@abc ~]#cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

 

ok,you willlogin 192.168.10.184 without input password.

 

If you want tologin remote linux server with putty work in your local windows, you could doas: (Window to Linux)

 

1)First, usessh-kengen to creat public/private rsa key pair.

2)Then,[root@localhost .ssh]# cat id_rsa.pub > authorized_keys

 

3)Download theprivate key with winSCP, and then use puttygen to convert the private key tothe format which linux could accept.

 

4)Set putty, andload the new pricate key.

 

Now, you couldloing remote linux server without input password

 
 
原文地址:https://www.cnblogs.com/cl1024cl/p/6205443.html