Closed luanguang closed 5 years ago
最早时期计算机通信是明文没有加密的,发送的数据包都是可以被其他人截获并且进行读取的。所以非常的不安全。为了信息的隐秘性,所以对发送的数据进行加密。但是用什么方法加密呢?
但是这样子的做法还是有一个漏洞,那就是中间人攻击。比方说C截获了A的公钥,然后把自己的公钥发给B。B发送信息给A期间,C获取信息,用自己的私钥解析,然后再用A的公钥加密发回给A。这样子做依旧无法保护信息的隐秘性。 这只能让自己处于一个相对安全的网络环境来应对了。
延伸到HTTPS。公钥和私钥的加密方式虽然安全,但是速度太慢。于是就想用RSA的方式将对称加密的密钥传递给对方,这样子能快上许多。可是有中间人攻击,这样子做又不安全了。于是想要用数字签名。将一个人的公钥以及个人信息之类的用hash算法生成消息摘要(hash算法是输入只有有一种变化,生成的结果就天翻地覆),接着用有公信力的认证中心(简称CA)的私钥加密生成一个数字签名。数字签名和之前的公钥以及个人信息之类的合并成一个数字证书。这个数字证书得到之后进行对比,相同那么就没有被修改。
本地登录服务器,我们用ssh username@ip进行首次登陆会有一些提示确保你保证自己的网络没啥危险,然后输入密码。不过这样子以后每次登陆都需要密码太麻烦。于是我们用公钥登陆,也就是将自己本地的公钥传递给服务器,ssh-copy-id -i 路径 username@ip,服务器接受了本地的公钥,然后我们到/etc/ssh/sshd_config这个文件进行修改
ssh username@ip
ssh-copy-id -i 路径 username@ip
/etc/ssh/sshd_config
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
把这三句前面的注释去掉,重启一下service ssh restart。就完成了。 ssh登录了一次之后,有一个文件known_hosts把公钥保存下来,下次登录的时候直接访问有没有。服务器还会生成一个authorized_keys来保存这个公钥,保存一行,另一个公钥重启一行。
service ssh restart
known_hosts
authorized_keys
用ssh连接服务器上的mysql。我用的是heidisql图形工具。首先我们将服务器上的用户名密码填上去。然后点开SSH隧道。 这时候我们需要先下载一个plink.exe,有32位和64位的。然后填写SSH主机+端口22。填上用户名,密码空着。接着我们加入本地的私钥文件,这个私钥文件必须是.ppk类型。所以我们需要下载一个PuTTY来将我们的私钥生成一个符合的文件。填写本地端口3307。我们只是使用SSH隧道,并不是SSH连接,而在隧道到达之后,3307会被转换成3306。点击打开,OK。
最早时期计算机通信是明文没有加密的,发送的数据包都是可以被其他人截获并且进行读取的。所以非常的不安全。为了信息的隐秘性,所以对发送的数据进行加密。但是用什么方法加密呢?
对称加密要解决发送密钥的时候如何不被截获,当然选择肉身送密钥是可以的,但这不现实。于是有人发明了RSA非对称加密技术。A有一个公钥,一个私钥。私钥保留在自己这里,而公钥发送给想要发给的人。例如B接收了发自A的公钥,然后将要发送的信息用公钥进行加密处理,发回给A。这个时候就算有人之前截获了A的公钥,也没有办法破解B发送的信息内容。这个信息只能由A手中的私钥进行解析。同理,B也可以将自己的公钥发给A,私钥保留在自己的手中。 安装完git之后,使用命令ssh-keygen,在.ssh目录下会生成公钥和私钥。id_rsa.pub和id_rsa,有pub结尾的是公钥。
但是这样子的做法还是有一个漏洞,那就是中间人攻击。比方说C截获了A的公钥,然后把自己的公钥发给B。B发送信息给A期间,C获取信息,用自己的私钥解析,然后再用A的公钥加密发回给A。这样子做依旧无法保护信息的隐秘性。 这只能让自己处于一个相对安全的网络环境来应对了。
本地登录服务器,我们用
ssh username@ip
进行首次登陆会有一些提示确保你保证自己的网络没啥危险,然后输入密码。不过这样子以后每次登陆都需要密码太麻烦。于是我们用公钥登陆,也就是将自己本地的公钥传递给服务器,ssh-copy-id -i 路径 username@ip
,服务器接受了本地的公钥,然后我们到/etc/ssh/sshd_config
这个文件进行修改把这三句前面的注释去掉,重启一下
service ssh restart
。就完成了。 ssh登录了一次之后,有一个文件known_hosts
把公钥保存下来,下次登录的时候直接访问有没有。服务器还会生成一个authorized_keys
来保存这个公钥,保存一行,另一个公钥重启一行。用ssh连接服务器上的mysql。我用的是heidisql图形工具。首先我们将服务器上的用户名密码填上去。然后点开SSH隧道。 这时候我们需要先下载一个plink.exe,有32位和64位的。然后填写SSH主机+端口22。填上用户名,密码空着。接着我们加入本地的私钥文件,这个私钥文件必须是.ppk类型。所以我们需要下载一个PuTTY来将我们的私钥生成一个符合的文件。填写本地端口3307。我们只是使用SSH隧道,并不是SSH连接,而在隧道到达之后,3307会被转换成3306。点击打开,OK。