说明:由于在搭建自己的博客,对SSH有了简单认识,特记录此篇文章。

SSH (Secure Shell) 是一种协议标准,主流的协议有有两个不兼容的版本分别是:1.x和2.x,意味着服务器端和客户端必须统一。SSH主要用于远程安全登录和加密传输数据。相比于telnet的明文密码传输,SSH更加安全。ssh软件由两部分组成:ssh服务端和ssh客户端。客户端是一些支持ssh的软件,如:putty(命令行难使用),flashFXP。暂时只用过这两种,其他还有xshell等等。

 

远程安全登录方面:

1.通过密码验证方式:服务器端利用RSA算法生成私钥和公钥,当客户端请求连接服务器时,服务器会发放安全证书,第一次登录的时候,会有一个安全警告,询问是否接受服务器的安全证书。单击“是(Y)”确定即可将证书保存到本地注册表中。实际上,如果删除了注册表中的这个安全证书,或者换台机器或系统,还会再次有这个安全警告。内容大概是:对于指纹xx:xx...,是否接受连接?(指纹是指公钥的hash值,主要是由于公钥太长比较不便)其实是让用户自己判断是否这个是中间人(恶意)发来的,所以这个是不安全的。对于连接阿里云上的服务器,先要在控制平台创建密钥对,帐号需输入root,和在控制平台上设置的密码,如果是改变了帐号,则输入相应帐号。对于网络上暴力破解root下的密码,最好自己创建一个新帐户,然后在服务端配置禁止root登录,需要 root 权限的时候,可以配置 sudo 来执行,或者登录后使用

su root

来切换到 root 帐户进行操作。

2.通过密钥验证方式登录:简单的说就是用户创建一对密钥,自己保留私钥,把公钥放在服务器中,当需要连接到SSH服务器上时,客户端软件就会向服务器发出请求,请求使用客户端的密钥进行安全验证。服务器收到请求之后,先在该用户的根目录下寻找公钥,然后把它和发送过来的公有密钥进行比较。如果两个密钥一致,服务器就用公有的密钥加密“质询”,并把它发送给客户端软件。客户端收到质询之后,就可以用本地的私人密钥解密再把它发送给服务器。这种方式是相当安全的。

对于两种方法的选择,需要对服务端进行配置,有一个具体的配置文件。

 

数据传输可能遇到的问题:

上传文件出现乱码:查看自己远程服务器的编码(可以用putty在命令行输入echo $LANG $LANGUAGE查看服务器端编码)然后比较客服端软件的编码方式,改过来即可。

参考自:https://www.jianshu.com/p/33461b619d53

               https://cnzhx.net/blog/putty-basic-usage/