远程访问及控制

一、SSH远程管理

  • 终端:接受用户的指令
    • TTY终端
    • 虚拟终端
      • ssh:22,加密
      • telnet:23,不加密
  • 解释器:shell

SSH(Secure Shel)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能,SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令

1、配置OpenSSH服务端

#服务端
[root@localhost ~]# setenforce 0        //关闭selinux内核机制
[root@localhost ~]# systemctl stop firewalld       //更改端口号时要么关闭防火墙,要么修改策略
[root@localhost ~]# vim /etc/ssh/sshd_config        //打开sshd的配置文件

修改
      Port 22                 ##监听的端口
      ListenAddress 192.168.10.10       ##监听的IP地址
      Protocol 2             ##ssh的v2版本
      UseDNS no          ##禁用dns反向解析
      
[root@localhost ~]# systemctl restart sshd

备注:当客户端第一次连接服务端时,会提示确认记录指纹密钥保存到本机,会在你的客户端隐藏 .ssh 文件中生成 known_hosts 文件

2、用户控制登录

#服务端
[root@localhost ~]# vi /etc/ssh/sshd_config
修改
      LoginGraceTime 2m         ##允许一次登录花费登陆验证的时间
      PermitRootLogin yes         ##为了后面的实验,不禁用root
      MaxAuthTries 6            ##登陆次数(输错密码的次数)
      PermitEmptyPasswords no      ##禁止空密码用户登录
      
[root@localhost ~]# ssh -o NumberOfPasswordPrompts=6 192.168.10.101        //想要尝试密码的次数

#如果只允许或禁止某些用户登录时,可以使用AllowUsers或DenyUsers配置
AllowUsers zhangsan aaa lisi@192.168.10.20   ##多个用户以空格分开,添加。lisi只能从10.20登陆
[root@localhost ~]# systemctl restart sshd

3、登录验证方式

#sshd 服务支持两种验证方式--密码验证、密钥对验证,可以设置只使用其中一种方式,也可以两种方式都启用
[root@localhost ~]# vi /etc/ssh/sshd_config

#PubkeyAuthentication yes              //启用密钥对验证
......
AuthorizedKeysFile    .ssh/authorized keys        //指定公钥库文件
......
#PasswordAuthentication yes            //启用密码验证

[root@localhost ~]# systemctl restart sshd

二、使用ssh客户端程序

        1、命令程序ssh、scp、sftp

                1)、ssh远程登录
客户端操作
[root@localhost ~]# ssh aaa@192.168.10.10
...                //接受秘钥
aaa@192.168.10.10's password:                 //输入密码
[aaa@localhost ~]$ whoami            //确认当前用户
[aaa@localhost ~]$ ifconfig ens33 | grep "inet "        //确认当前主机地址(引号内有空格)
#如果 sshd 服务器使用了非默认的端口号(如 2345),则在登录时必须通过“-p”选项指定端口号
[root@localhost ~]# ssh -p 2345 aaa@192.168.10.10
                2)、scp远程复制
[root@localhost ~]# scp 192.168.10.10:/opt/aaa /root    ##下载,在AllowUsers中添加root
[root@localhost ~]# scp -o port 8888 192.168.10.10:/root/aaa /opt/111    ##服务端更改端口的情况下下载
#root@192.168.10.10's password:         //密码

[root@localhost ~]# scp aaa 192.168.10.101:/root     ##上传
[root@localhost ~]# scp -P 8888 /opt/111 192.168.10.101:/root    ##服务端更改端口的情况下上传
root@192.168.10.10's password:        //密码
                3)、sftp安全FTP
[root@localhost ~]# sftp 192.168.10.101
192.168.10.101's password:             //输入密码

sftp> put profile    ##上传到了宿主目录下,普通用户只能将数据上传到宿主目录,
                        root可以上传到其他地方直接用cd切换目录

sftp> get profile   ##下载,下载到当前位置
sftp> get profile /opt/profile    ##下载指定位置

sftp> bye                        //退出登录

#如果远程服务器修改了端口号,可用下列方法登录sftp
[root@localhost ~]# sftp -o port=8888 root@192.168.10.101

备注:如果不想打上更改的端口号可以修改客户端的ssh_config配置文件找到#Prot 22,去掉#号,然后更改为和服务端一样的端口号

4)、lrzsz上传下载

##服务端
[root@localhost ~]# yum -y install lrzsz
##可以直接拉取文件到xshell
[root@localhost ~]# rz     ##上传
[root@localhost ~]# sz 指定文件    ##下载

三、构建密钥对验证ssh体系(方法一)

1、在客户端创建密钥对

[root@localhost ~]# ssh-keygen -t rsa     ##创建密钥

Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/zhangsan/.ssh/id ecdsa):            //指定私钥位置
Created directory '/home/zhangsan/.ssh'.
Enter passphrase (empty for no passphrase):                //设置私钥短语#秘钥短语:用于第一次使用该秘钥时解锁秘钥用的
Enter same passphrase again:                //确认所设置的短语
Your identification has been saved in /home/zhangsan/.ssh/id ecdsa.
Your public key has been saved in /home/zhangsan/.ssh/id ecdsa.pub.
The key fingerprint is:
......


[root@localhost ~]# cd .ssh            //确认生成的密钥文件
[root@localhost ~]# ls
id_rsa     id_rsa_pub    known_hosts 

2、将公钥文件上传至服务器

##第一种将公钥文件复制到服务器,服务器端创建.ssh
[root@localhost ~]# mkdir .ssh
##客户端cat之前创建好的id_rsa_pub,查看内容
[root@localhost ~]# cd .ssh
[root@localhost .ssh]# ssh-copy-id 192.168.10.101 

3、在服务器中导入公钥文本

[root@localhost ~]# useradd aaa
[root@localhost ~]# passwd aaa
[root@localhost ~]# mkdir -p /home/aaa/.ssh/      ##想登陆谁的账号,就导入到谁里面
[root@localhost ~]# cat /tmp/id_rsa.pub >> /home/aaa/.ssh/authorized_keys
[root@localhost ~]# tail -l /home/aaa/.ssh/authorized_keys
...
[root@localhost ~]# ls -l /home/aaa/.ssh/authorized_keys

4、在客户端使用密钥对验证

[bbb@localhost root]$ ssh aaa@192.168.10.10   ##在服务器上allowusers中要添加aaa账号
[aaa@localhost ~]$ ifconfig

#查看服务器中目标用户lisi的公钥数据库如下
[aaa@localhost ~]$ ls -l /home/aaa/.ssh/authorized_keys
[aaa@localhost ~]$ tail -l /home/aaa/.ssh/authorized_keys
[aaa@localhost ~]$ exit

四、免密登录(方法二)

##免密登录,不设置私钥短语
[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]# yum -y install openssh-clients
[root@localhost ~]# ssh-copy-id root@192.168.10.101

五、TCP Wrappers访问控制 (TCP封装)

/etc/hosts.allow和/etc/hosts.deny设置
格式相同:<服务程序列表>;<客户端地址列表>
例添加
sshd:192.168.10.101 192.168.20.*
sshd:ALL    
  • 服务程序列表
    • ALL:代表所有的服务
    • 单个服务程序:如“vsftpd”
    • 多个服务程序组成的列表:如“vsftpd,sshd”
  • 客户端地址列表
    • ALL:代表任何客户端地址
    • LOCAL:代表本机地址
    • 单个|P 地址:如“192.168.4.4”
    • 网络段地址:如“192.168.4.0/255.255.255.0”
    • 以“.”开始的域名:如“.bdgn.com"匹配 bdgn.com 域中的所有主机
    • 以“”结束的网络地址:如“192.168.4.”匹配整个 192.168.4.0/24 网段
    • 嵌入通配符“”“?”:前者代表任意长度字符,后者仅代表一个字符,如“10.0.8.2”匹配以 10.0.8.2 开头的所有 IP 地址。不可与以“”开始或结束的模式混用
    • 多个客户端地址组成的列表:如“192.168.1.,172.16.16.,.bdqn.com”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值