Linux Shell编程笔记9 SSH和Screen工具

SSH

SSH的作用是对数据进行加密处理。在互联网上直接使用明文传输是不安全的。中间人攻击就是通过窃取发送的明文数据,然后进行攻击。一个较为安全的方式是,把数据进行加密传输,这样使得攻击者获取到的数据内容是被加密的,没有实际的价值。加密方式有对称加密和非对称加密,对称加密有一定的风险,但是速度快;非对称加密速度慢,但是安全性极高。先分别介绍两种方式。

下面的内容参考了这几篇博客:

对称加密以及SSH的应用

首先要理解加密算法的基本流程,我们先生成一个密钥,之后把这个密钥和需要加密的内容一起输入加密函数,加密函数会把信息进行内部的计算,输出加密的内容。对称加密的原理就是,加密内容和解密内容使用的密钥是同一个。常见的算法有DES、AES等算法等。一个好的加密算法有个特点,理论上在有意义的时间内,我们无法根据加密的内容和文本反推出密钥的内容。

对称加密基本的图解如下:

可以看出,加密解密的密钥是一致的。这种方式非常快,但是有安全问题。因为服务器是给客户端分发密钥的,如果密钥被泄露了,那么整个加密体系就被破坏了;因为此时可以有伪造的服务器利用这个密钥来欺骗客户端,或者有伪造的客户端利用密钥来欺骗服务器。

非对称加密以及SSH的应用

非对称加密的特点是,每个链接的两端分别生成各自的公钥和私钥,公钥是要发给通信的对方,而私钥是严格保密不外露的。对于一个非对称加密体系来说,公钥加密的信息,只有私钥可以解密;而私钥加密的信息,只有公钥可以解密。所以,对于通信的双方来说,只需要把自己的公钥发送给对方即可。如果要给对方发送消息,需要拿对方的公钥对消息进行加密,然后直接发送出去即可。这样,即使有人窃取消息,但是对方没有对应的私钥,就无法破解消息。同样的,接收到发来的消息时,我们需要拿自己的私钥对消息进行解密,这样就可以判别消息的真伪了。

给出一个示例图:

假设我们的公钥丢失了,那么这只会破坏局部的加密体系。因为伪造的一方只能只能用我们的公钥向对端发送消息,而它即使接收到对方的消息,也无法对消息进行解密。非对称加密虽然安全,但是速度比较慢,常用的方式是使用非对称加密进行核心的信息验证,比如登录、支付等,一般的非核心数据使用对称加密传输即可。

SSH的应用

基于口令和密码的对称加密

最简洁的使用方式:

ssh -l erick testsrver.com

erick是登录用户名,testserver.com是主机域名。或者还有一个方式是:

ssh erick@testserver.com

第一次输入需要输入yes

之后,在~/.ssh/know_hosts的文件中,就有对应的密钥了。我们在输入对应的密码,此时就可以进行远程登录了。这种方式涉及到了用户名和密码的登录,很有可能有中间人攻击,所以还可以考虑下一种方式。

基于密钥对的非对称加密

最基本的方式,生成密钥对:

ssh-keygen -t rsa -C "12345678@qq.com"

-t rsa说明这是使用rsa方式加密,-C后面的内容相当于一个注释。会有一个passphrasse,这是私钥的密码,一般不用输入。上面那个命令,如果经常使用Github,应该会很熟悉。之后,我们需要把公钥上传到服务器端:

ssh-copy-id -i /home/erick/.ssh/id_rsa.pub testserver.com

这句话的意思是,本机密钥在本地目录的/home/erick/.ssh/id_rsa.pub文件中,testserver.com是服务器域名,之后会把本地密钥会传送到服务器的指定位置。但是注意,此时仍然需要服务器ssh的密码才可以把公钥上传,这很容易理解,因为如果不用密码,那么攻击者就会不停地写入恶意公钥,导致服务器出现问题。

还有一个等效的方式:

scp /home/erick/.ssh/id_rsa.pub erick@testserver.com

还有另一个等效方式:

ssh erick@testserver.com
# 服务器下次要求匹配密钥对时,从authorized_keys文件开始查找
cat /home/erick/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

使用非对称加密传输配对后,再次登录远程服务器时,只需要输入:

ssh testserver.com

即可不使用用户名和密码进行登录了。

注意,我们之前生成密钥的时候,有一步提示密钥密码,一般来说,我们直接回车忽略即可,这样在ssh登录的时候,也是直接回车,其实ssh非对称加密的登录,也是有需要密码的,这个密码就是passphrase。一般不是严格加密的情况下,passphrase不必输入。

OpenSSH的密钥管理

上述提及了SSH的密钥处理方式。我们很多时候为了方便而不使用passphrase,这样做还是有个隐患。万一我们本地的私钥泄露了,那么加密体系就会出现问题。为了解决这个问题,又不想输入密码,可以使用ssh-agent程序。具体参考有关ssh-agent的手册来查询具体的使用方式。

SSH的工具套装

拷贝工具scp的实例:

scp dumb erick@testserver.com:.  # 把dumb文件拷贝到服务器对应的erick用户根目录上
scp erick@testserver.com:dumb:.  # 上述操作反过来

使用sftp拷贝。这是以ftp的模式拷贝文件,具体可以参考手册。

使用rsync拷贝文件。这个命令可以结合-e ssh参数与SSH结合使用。它的优势在于不会拷贝全部的文件,而是只会拷贝本
地目录和远程目录中有区别的文件。其使用高效的压缩算法,提高速度。

Screen

这个工具的目的在于处理那些耗时的任务。如果我们向服务器传输大量的文件,或者服务器端执行耗时的任务,那么此时客户端就得等待,贸然退出会发送SIGHUP信号,导致服务器进程退出。

Screen工具给shell提供一个screen命令,该命令在多进程之间多路复用一个物理终端的窗口模拟器。用户可以在一个screen回话中创建多个screen窗口,每个窗口就像操作一个真实的SSH连接窗口。

首先安装该工具:

sudo apt-get install screen

一个screen命名会创建一个全屏的shell窗口。Ctrl+a创建一个新的screen窗口,给出一个命令绑定键的表:

还有一些常用的选项,给出一个表,具体使用时再查看即可:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值