【Linux配置】SSH 原理及简单使用

SSH 原理及简单使用

1,SSH 概念

SSH(Secure Shell,SSH)即安全外壳协议,是专为远程登录会话而提供的一种安全性协议,默认端口 22 。注意区别于Talnet(远程登录)、FTP (文件传输)等明文传输协议。

SSH 协议的实现一般有商业实现和开源实现。我们主要讨论的是针对于 OpenSSH 的开源实现。

OpenSSH 是一个开源库,是基于 OpenSSl 密码库实现的一个安全远程登录协议,而 OpenSSL 是一个 C 语言实现的密码库,提供了相当丰富的密码学组件。具体可参考文末相关链接。

2,SSH 原理

首先了解基本的登录模式:

Client 向 Server 提供密码并得到确认后,即认证成功可以登录。但这里的问题是,密码的安全性问题?认证的安全性问题?SSH 使用了公钥密码机制提升安全性。即 Server 自己生成一对公私钥,并把公钥安全的发送给 Client,使用自己的私钥进行验证。当然,这个认证是相互的,客户端也要认证服务端。同时,这里注意区别于 HTTPS 中基于 CA 的认证模式。

但是安全的发送过程,可能会面临着中间人攻击的情况。目前较好的解决办法是,由客户端足确认目标服务器的公钥是否可信,一旦可信就会把 Host 加入自己的 known_hosts 中。比如可能会出现下面的情况:

The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

上面表明,是否授信远程主机的公钥(RSA生成的公钥有1024位,这里取得是经过MD5的指纹信息)。

此时输入yes,就会出现下面信息:

Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts. 
Password: (enter password) 

表明客户端已经确认连接,远程主机会被加入到 known_hosts 中,然后输入密码即可完成登录。

3,SSH 免密登录

每次登录都要输入密码特别不方便,尤其是在集群环境中,各主机之间的通行非常频繁的情况下。SSH 提供了免密登录策略。

基本流程:

4,SSH 实战

配置服务器免密服务的基本的流程为:

1,进入客户端家目录.ssh文件夹下

cd ~/.ssh

2,生成公私钥

ssh-keygen-t rsa

3,拷贝公钥到目标服务器上

ssh-copy-id xxx

image-20210630155113129

  • authorized_keys:存放授权的客户端公钥;
  • id_rsa:存放私钥;
  • id_rsa.pub:存放公钥;
  • known_hosts:存放已经访问过的主机信息。

使用时,只需执行 ssh xxx 即可登录目标服务器。

类似的,在使用 git 登录 github 时,也会进行类似 SSH 免密授权操作。

【参考链接】

猜你喜欢

转载自blog.csdn.net/qq_40589204/article/details/118363913