Linux之SSH免密登录

目录

1.什么是SSH?

2.SSH认证机制

3.配置免密登录


1.什么是SSH?

SSH为Secure Shell(安全外壳协议)的缩写,简单说,SSH是一种网络协议,用于计算机之间的加密登录,很多ftp、pop和telent在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而SSH就是专为远程登录会话和其他网络服务提供安全性的协议。总结一句话就是,SSH是一种安全外壳协议,主要用于计算机之间安全访问

SSH是由客户端和服务端的软件组成的。服务端是一个守护进程(sshd),它在后台运行并响应来自客户端的连接请求。客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登录)、sftp(安全文件传输)等其他的应用程序。

2.SSH认证机制

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

第1种级别:基于口令的安全验证,即只要你知道自己的账号和口令,就可以登录到远程主机。

第2种级别:基于密钥的安全验证,具体原理如下:

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

Linux之SSH免密登录_第1张图片

3.配置免密登录

方式一

1.生成秘钥对:ssh-keygen ##点击3次回车

2.将公钥发送到另一台机器的授权池中:

  • ~/.ssh/authorized_keys:授权池文件
  • 执行命令:ssh-copy-id 主机名或ip  ##将公钥发送到另一台机器授权池

3.验证:ssh hdp02

方式二:

假如A要登录B,在A上进行操作,如下

1.首先生成密钥对,使用命令:ssh-keygen 或者 ssh-keygen -t rsa

前面一种是它的简写形式,提示要输入信息的时候不用输入任何东西,直接回车三次就ok了。上述命令执行完成之后会在家目录的.ssh目录下生成这么两个文件,其中id_rsa.pub是公钥。

2.将A自己的公钥放置到授权列表文件authorized_keys中:

  • cat id_rsa.pub > authorized_keys 或者 cp id_rsa.pub authorized_keys

3.将得到的authorized_keys发送给B机器对应的文件夹下:

  • scp -r authorized_keys [email protected]:$PWD
  • 或者 scp -r authorized_keys [email protected]:/root/.ssh/
  • 这是一个远程拷贝命令,意思是把authorized_keys拷贝到192.168.123.202这台机器对应目录下。

5.这样我们的机器A就能访问到机器B了。验证方法使用命令:ssh 192.168.123.202

重点理解之处:A将公钥发给B,不是B可以访问A,而是A可以访问B,所以任何一台机器想要能访问其他机器,那么就把自己的公钥内容发送到别的机器的authorized_keys中去,记住是追加不是覆盖。

你可能感兴趣的:(linux)