远程控制服务
配置sshd服务
SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet来进行远程登录。但是因为它们以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中间人攻击,这轻则篡改传输的数据信息,重则直接抓取服务器的账户密码。
想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法
基于口令的验证—用账户和密码来验证登录;
基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。
服务的配置文件的保存路径及命名:
主配置文件:/etc/服务名称/服务名称.conf
普通文件:/etc/服务名称
“Linux系统中的一切都是文件”,因此在Linux系统中修改服务程序的运行参数,实际上就是在修改程序配置文件的过程。sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。
sshd服务配置文件中包含的参数以及作用
参数 作用
Port 22 默认的sshd服务端口
ListenAddress 0.0.0.0 设定sshd服务器监听的IP地址
Protocol 2 SSH协议的版本号
HostKey /tc/ssh/ssh_host_key SSH协议版本为1时,DES私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私钥存放的位置
PermitRootLogin yes 设定是否允许root管理员直接登录
StrictModes yes 当远程用户的私钥改变时直接拒绝连接
MaxAuthTries 6 最大密码尝试次数
MaxSessions 10 最大终端数
PasswordAuthentication yes 是否允许密码验证
PermitEmptyPasswords no 是否允许空密码登录(很不安全)
实例:配置sshd服务,禁止以root管理员身份远程登录服务器。
ssh 192.168.10.10 #远程登录主机192.168.10.10,本机也可以用ssh登录本机
exit #退出登录
vim /etc/ssh/sshd_config #修改sshd主配置文件
48 PermitRootLogin no #修改48行的参数为no,表示不允许root管理员远程登录
systemctl restart sshd #重启sshd服务
systemctl enable sshd #把sshd服务加入到开机启动项中
ssh 192.168.10.10 #用root登录,提示Permission denied
安全密钥验证
ssh-keygen #客户端操作。生成“密钥对”(公钥和私钥)。会有3次确认,直接回车就行
ssh-copy-id 192.168.10.10 #客户端操作。把生成的公钥文件传送给服务端。会提示是否继续连接,yes。还会提示要求输入服务端的root密码
vim /etc/ssh/sshd_config #服务端操作。修改ssh服务配置文件
78 PasswordAuthentication no #服务端操作。拒绝口令验证
systemctl restart sshd #服务端操作。重启sshd服务
ssh 192.168.10.10 #客户端操作。尝试远程登录服务端主机
远程传输命令
scp命令中可用的参数及作用
参数 作用
-v 显示详细的连接进度
-P 指定远程主机的sshd端口号
-r 用于传送文件夹
-6 使用IPv6协议
**实例:**在客户端创建一个文本文件A,上传到服务端,再从服务端新建文本文件B,从客户端中把服务端的B下载下来。
echo "张笑寒 我能说你啥" >> B.txt #服务端操作。新建一个文本文档B.txt
echo "优秀的不得了" >> A.txt #客户端操作。新建一个文本文档A.txt
scp /root/Desktop/A.txt 192.168.10.10:/root/Desktop #客户端操作。把文件A上传给服务端的/root/Desktop路径下
scp 192.168.10.10:/root/Desktop/B.txt /etc #客户端操作。把服务端的B文件下载到本机的/etc目录下
不间断会话服务
当与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断。
如果我们正在使用命令来打包文件,或者正在使用脚本安装某个服务程序,中途是绝对不能关闭在本地打开的终端窗口或断开网络链接的,甚至是网速的波动都有可能导致任务中断,此时只能重新进行远程链接并重新开始任务。还有些时候,我们正在执行文件打包操作,同时又想用脚本来安装某个服务程序,这时会因为打包操作的输出信息占满用户的屏幕界面,而只能再打开一个执行远程会话的终端窗口,时间久了,难免会忘记这些打开的终端窗口是做什么用的了。
screen是一款能够实现多窗口远程控制的开源服务程序,简单来说就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用screen服务程序同时在多个远程会话中自由切换,能够做到实现如下功能。
会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
安装screen程序(前提是配置好Yum仓库):yum install -y screen
screen命令:用于管理远程会话。
常用参数:
-S: 创建会话窗口
-d: 将指定会话进行离线处理
-r: 恢复指定会话
-x: 一次性恢复所有会话
-ls: 显示当前已有会话
-wipe: 把目前无法使用的会话删除
管理远程会话
screen命令能做的事情非常多:可以用-S参数创建会话窗口;用-d参数将指定会话进行离线处理;用-r参数恢复指定会话;用-x参数一次性恢复所有的会话;用-ls参数显示当前已有的会话;以及用-wipe参数把目前无法使用的会话删除,等等
screen -S backup #创建会话backup
screen -ls #查看已有会话,发现会话backup处于连接()状态
exit #退出会话backup
screen vim memo.txt #在创建会话的同时执行编辑文件memo.txt的命令,命令执行完毕后screen会话也会自动结束
heheda #写入文本内容
screen -S linux #创建会话linux
tail -f /var/log/messages #在会话linux里执行该命令,故意强行关闭会话窗口
screen -ls #重新打开命令行窗口,查看已有会话,发现会话linux处于断开(Detached)状态
screen -r linux #恢复会话linux,可以发现刚刚关闭窗口导致中断的命令可以继续执行
实验操作:
在红帽7中没有screen命令,需要在yum仓库中添加screen命令
操作如下
第一步先把CD 挂载在服务器上,并已确认连接
装yum仓库
出现complete 完成
管理远程会话
screen命令能做的事情非常多:可以用-S参数创建会话窗口;用-d参数将指定会话进行离线处理;用-r参数恢复指定会话;用-x参数一次性恢复所有的会话;用-ls参数显示当前已有的会话;以及用-wipe参数把目前无法使用的会话删除,等等
screen -S backup #创建会话backup
screen -ls #查看已有会话,发现会话backup处于连接()状态
exit #退出会话backup
screen vim memo.txt #在创建会话的同时执行编辑文件memo.txt的命令,命令执行完毕后screen会话也会自动结束
heheda #写入文本内容
screen -S linux #创建会话linux
tail -f /var/log/messages #在会话linux里执行该命令,故意强行关闭会话窗口
screen -ls #重新打开命令行窗口,查看已有会话,发现会话linux处于断开(Detached)状态
screen -r linux #恢复会话linux,可以发现刚刚关闭窗口导致中断的命令可以继续执行
会话共享功能
ssh 192.168.10.10 #客户端A操作。远程登录到服务端(192.168.10.10)
screen -S test #客户端A操作。创建一个screen会话
ssh 192.168.10.10 #客户端B操作。远程登录到服务端
screen -x #客户端B操作。获取远程会话