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

SSH的两种登录方式

时间:2018-08-02 02:05:14      阅读:726      评论:0      收藏:0      [点我收藏+]

标签:消息   重复   操作   不重复   远程   客户   shell   秘钥   sts   

ssh客户端使用的是Xshell,windows环境。

第一种方式,用户名密码方式

原理如下:

  • 客户端发起ssh请求之后,服务器把自己的公钥传给客户端
  • 客户端输入服务器密码通过公钥加密之后传给服务器
  • 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

Xshell操作如下:

1.

技术分享图片

2.

技术分享图片

3.

技术分享图片

 

第二种方式基于秘钥的登录方式

  • 首先在客户端生成一对密钥(ssh-keygen);
  • 并将客户端的公钥ssh-copy-id 拷贝到服务端;
  • 当客户端再次发送一个连接请求,包括ip、用户名;
  • 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:qwer;
  •  服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端;
  • 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端;
  • 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录。

现在拿服务器A(192.168.204.192)访问服务器B(192.168.204.100)举例:

Xshell操作如下:

1.在服务器A端生成RSA的公钥和私钥,通过 ssh-keygen -t rsa 命令

如下图所示id_rsa为私钥,id_rsa.pub为公钥。

技术分享图片

2.将公钥放到服务器B中,一般是在用户根目录下的.ssh/目录下,通过命令 ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.204.100

在服务器B端的.ssh/目录下有authorized_keys+know_hosts,这两个文件。如下:

技术分享图片

authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥,上面提到的A端在生成自己的公私钥之后,将公钥追加到服务器B端的authorized_keys文件后面。如下:

技术分享图片

know_hosts : 已知的主机公钥清单,这个作为A端和B端都会自动生成这个文件,每次和远端的服务器进行一次免密码ssh连接之后就会在这个文件的最后追加对方主机的信息(不重复)。如下:

技术分享图片

 

到这里配置就设置结束了。

现在服务器A访问服务器B,直接通过命令 ssh root@192.168.204.100

如下:

技术分享图片

因为设置的是单向的,A到B,若现在服务器B要访问A,是需要输入密码的,如下:

技术分享图片

 

如果嫌每次连接的时候很麻烦

我们可以利用 ssh 的用户配置文件 config 管理 多个免密码ssh 会话。ssh 的用户配置文件是放在当前用户根目录下的 .ssh 文件夹里(~/.ssh/config,不存在则新创建一个),其配置写法如下:

Host    别名

    HostName        主机名

    Port            端口

    User            用户名

    IdentityFile    密钥文件的路径

如下图实例:

技术分享图片

配置完后我们就可以通过这种方式登录了:‘

技术分享图片

 

SSH的两种登录方式

标签:消息   重复   操作   不重复   远程   客户   shell   秘钥   sts   

原文地址:https://www.cnblogs.com/gexiaoshan/p/9404424.html

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