常见网络协议:
HTTPS协议安全性更高;HTTP协议是明文传输的;
FTP协议:文件传输协议
电子邮件协议:IMAP、POP3
Telnet协议:简单易用,在机器间传输简单信息;明文传输
明文:plaintext
密文:cyphertext
WireShark 用于监听网络,截获数据
==================================================================
SSH协议:Secure Shell的缩写
加密算法大致分为两类:对称加密和非对称加密;
对称加密,用一个密钥来加密信息;加密解密用同一个密钥;加密方和解密方都需要知道同一个密钥;
这样的话,客户机和服务器就需要传递这个密钥;传递密钥用的是明文,就有可能被截获;
为了加密用于对称加密的密钥:非对称加密;
公钥只用来加密;
用非对称加密的算法,我们只能用私钥来解密;
公钥可以在网络上用明文传输;是公开的密钥;
公钥被截获也没有关系;
用于解密的私钥,要保管好;
RSA算法:非对称加密算法
用SSH创建一个安全的通信通道:
SSH结合使用非对称加密和对称加密两种方法;
首先,使用非对称加密,安全地传输对称加密地密钥;
之后,一直使用对称加密密钥作为加密和解密手段;
非对称加密:太消耗电脑资源;
非对称加密只是在通信之初传递对称加密密钥;
加密通道建立过程:
1、服务器首先将非对称加密的公钥A用明文传递给客户机;
2、客户机用公钥A加密自己的对称加密密钥C;将经过A加密的C传递给服务器;
3、服务器用非对称加密的私钥B,来解密被加密过后的C;
4、现在服务器和客户机都知道了对称加密的密钥C;
5、关键是对称加密的密钥C从来没有在网络上用明文传递过,就很安全了;
6、客户机就可以放心地把自己的登录名和密码传递给服务器了;
以上这些都是自动完成的;
===================================================
SSH的使用:
1)你已经租用了一台服务器
这台服务器已经配置好了作为SSH服务器,你什么也不用做;
2)你没有租用一台服务器
将自己电脑配置成SSH服务器;
安装OpenSSH软件,是SSH协议的免费开源实现;
分为客户端openssh-clients和服务端openssh-server;
如果你只想用ssh远程连接到别的机器,就下载安装openssh-clients;
如果你要使自己的机器开放SSH服务,则需要安装openssh-server;这样的话会开启ssd这个守护进程,或者叫精灵进程
手动开启 sudo systemctl start sshd;
停止的话sudo systemctl stop sshd;
查看 sudo systemctl status sshd
将sshd设为开机自启动:sudo systemctl enable sshd
==================================================
实践:
安装ssh:yum install openssh-server
启动ssh:systemctl start(restart) sshd
设置开机运行ssh:systemctl enable sshd
Windows端:可以使用XShell、SecureCRT等软件;
Linux端:yum install openssh-clients
macOS端:已经默认安装了
=================================================
用config文件配置SSH:
全局的SSH文件有两个:
1)SSH客户端的配置:/etc/ssh/ssh_config
2)SSH服务端的配置:/etc/ssh/sshd_config
客户端config文件的使用手册:man ssh_config
服务端config文件的使用手册:man sshd_config
客户端config文件的常用配置参数:
host 别名
hostname 远程主机名
port 连接到远程主机的端口
user 用户名
客户端config文件的配置例子 //客户端修改config文件比较少
Host myname
HostName 192.168.0.1
Port 22
User root
服务端config文件的常用配置参数
Port sshd服务端口号,默认是22
PermitRootLogin 是否允许以root用户身份登录,默认是可以
PasswordAuthentication 是否允许密码验证登录,默认是可以
PubkeyAuthentication 是否允许公钥验证登录,默认是可以
PermitEmptyPasswords 是否允许空密码登录,不安全,默认是不可以
修改全局的config文件后,重启sshd服务使之立即生效
sudo systemctl restart sshd
局部的config文件,对于客户端而言:
root用户的家目录下如果没有.ssh目录,:ssh localhost 来生成
局部的客户端config文件在用户家目录的.ssh的隐藏目录中
config默认是没有创建的;
一般会把config文件的权限修改为600:chmod 600 ~/.ssh/config
这样就可以用 ssh 别名 来快速登陆远程服务端;
使用config文件方便管理多个远程主机
=================================================
SSH的config文件可以帮助我们配置SSH
config文件分为全局config文件和局部config文件
全局的config文件会对所有用户生效,要谨慎修改
=================================================
SSH免密码登录:
SSH有两种登录方法:
1)基于口令:账户加密码
2)基于密钥:
在客户机生成密钥对(公钥、私钥),把公钥上传到服务器,并于服务器的公钥进行比较
具体过程:
1、ssh-keygen (默认使用RSA非对称加密算法)在客户机生成密钥对
该命令等价于 ssh-keygen -t rsa
运行完之后,会在家目录的~/.ssh/目录下,生成两个文件;
id_rsa.pub 公钥
id_rsa 私钥
2、把客户机的公钥传送到服务器
ssh-copy-id root@ip
等价于ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip
该命令会把客户机的公钥追加到服务器的一个文件中 authorized_keys 位于服务端~/.ssh/authorized_keys
如果设置SSH免密码后仍然想使用密码登录
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@host
Windows下Putty免密码登录linux方法;
百度一下
为了免去每次使用SSH协议连接远程机器都要输入用户密码的麻烦;
我们可以创建一个用于验证身份的密钥对(公钥、私钥);
公钥需要传输并存储到远程机器上
私钥则存在我们自己的电脑里
之后的SSH连接就不需要输入密码了