远程访问及控制

147 阅读4分钟

SSH远程管理

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复刺等功能,默认是TCP的22端口。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。

SSH协议的优点

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

TELNET协议也可以进行远程管理。TELNET为远程终端协议,使用TCP的23端口,是明文传输,一般用于测试环境。

  • SSH客户端:Putty、Xshell、 CRT
  • SSH服务端:openSSH

openSSH是实现SSH协议的开源软件顶目,适用于各种UNIX、Linux操作系统。 CentOS 7系统默认已安装openssh相关软外包,并己将 sshd 服务添加为开机自启动。

执行“systemctl start sshd”命令启动sshd服务。 sshd服务的默认配置文件是/etc/ssh/sshd_contig

  • 针对服务端的配置文件:sshd_config
  • 针对客户端的配置文件:ssh_config

sshd_config配置文件的常用选项 如果要启用选项,解除注释#。

image.png

修改配置文件后,重启服务“systemctl restart sshd”。

监听端口默认为22:Port 22 修改端口需要关闭防火墙和selinux

image.png

禁止root用户登录:PermitRootLogin no  再使用Xshell连接,则会被拒绝。

image.png image.png 最大重试次数为6:MaxAuthTries 6 如果到最大次数依然输入错误密码,则会断开数据包。

禁止空密码用户登录:PermitEmptyPasswords no 删除用户buer的密码后,用户buer无法再连接。

image.png

image.png

SSH客户端程序

SSH远程登录

css复制代码 ssh [选项] 用户名@192.168.6.20(要登入地址) 选项:-p 指定非默认端口号,缺省时就使用默认端口22

当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes ")后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts文件中。密码验证成功之后,下次再登录就不用再次验证。

  1. scp远程复制

scss复制代码上行复制(推送):scp [-P 端口号] [-r 目录] 文件 [用户]@服务端IP:保存路径

scss复制代码下行复制(获取):scp [-P 端口号] [用户]@服务端IP:保存路径 本地路径

sftp 安全FTP 操作语法和ftp几乎一样。 三种FTP:

vsftp:tcp(20、21)常规的文件传输协议,明文传输,传输速度较快但不安全,一般在局域网中使用 sftp:tcp(22)安全FTP,传输时会加密压缩,传输效率比普通FTP要低一些,但安全性更高 tftp:udp(69)简单的轻量级文件传输协议,一般用于传输一些小文件

sshd服务支持两种验证方式

密码验证 对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解

密钥对验证 要求提供相匹配的密钥信息才能通过验证。 通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。 远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。

公钥和私钥的关系

公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。 不能根据一个密钥来推算出另一个密钥(非对称密钥)。 公钥对外公开,私钥只有私钥的持有人才知道。

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。

配置密钥对验证

image.png 过程

客户端生成公钥私钥对,并将公钥发送给服务器,发送登录请求。 服务器生成随机数,并用公钥对其进行加密,将加密的随机数发送给客户端。 客户端通过私钥进行解密,将解密后的信息发送给服务器。 服务器验证信息是否正确。

客户端和服务端是一对一的关系,如果不是指定的用户或者客户端登录是无效的。 配置过程

在客户端创建密钥对

把公钥文件导到ssh服务端

手动复制 将公钥文件复制到服务端

自动复制:(在客户端,多个密钥文件要-i指定) ssh-copy-id -i 公钥文件 用户@服务端IP

创建公钥文本保存文件authorized_keys,并且把复制来的公钥文件内容导入到该文件中,自动复制会自动创建文件authorized_keys

然后即可用客户端进行登录,输入创建密钥所设的密码

实现免交互登录

在导入公钥文件后,在客户端输入ssh-agent bash和ssh-add,此方式只能在当前连接中有效,在其他客户端登录或者重启后失效。

直接创建空密码的密钥对来使用。即创建密钥的时候,密码为空。