luanguang / blog

学好阅读理解,杠精解散。
13 stars 5 forks source link

ssh的各种连接 #12

Closed luanguang closed 5 years ago

luanguang commented 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这个文件进行修改

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

把这三句前面的注释去掉,重启一下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。