一、SSH 远程管理

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入 的用户口令。与早期的 Telent(远程登录)、RSH(Remote Shell,远程执行命令)、RCP (Remote File Copy,远程文件复制)等应用相比,SSH 协议提供了更好的安全性。

二、配置服务端

1.服务监听选项

[root@localhost ~]# setenforce 0

注意:如果不关闭selinux,不能修改端口号

[root@localhost ~]# vi /etc/ssh/sshd_config

修改

      Port 22                 ##监听的端口

    ListenAddress 192.168.10.10        ##监听的IP

      Protocol 2             ##ssh的v2版本

      UseDNS no          ##禁用dns反向解析


[root@localhost ~]# systemctl restart sshd

客户端登陆验证

linux客户端  

[root@localhost Packages]# ssh root@192.168.10.10

注意:服务端可以修改端口号,但在远程连接时,服务器要关防火墙

[root@localhost ~]# ssh -p 16666 root@192.168.10.10


2.用户登录控制

[root@localhost ~]# vi /etc/ssh/sshd_config

修改

      LoginGraceTime 2m         ##允许一次登录花费登陆验证的时间

      PermitRootLogin yes         ##为了后面的实验,不禁用root

      MaxAuthTries 6            ##登陆次数(输错密码的次数)

      PermitEmptyPasswords no      ##禁止空密码用户登录

#StrictModes yes##严格模式如果StrictModes为yes必需保证存放公钥的文件夹的与登陆用户名是相同的

AllowUsers zhangsan aaa lisi@192.168.10.20   ##只允许或拒绝时用,添加。lisi只能从10.20登陆

[root@localhost ~]# systemctl restart sshd

客户端登陆验证

[root@localhost ~]# ssh zhangsan@192.168.10.10

注:allowusers会限制你登陆的用户,所以后面试验中所有希望ssh登陆的用户,都要在这里添加,包括密钥对登陆的用户,如果不想限制,可以不用添加该行。

客户端在ssh登录的时候,默认使用3次密码尝试,所以在测试这个MaxAuthTries参数时,可以让客户端多尝试几次密码,可以用以下语句让客户端登录时尝试指定次数的密码

[root@192 ~]# ssh -o NumberOfPasswordPrompts=8 192.168.10.101


三、使用ssh客户端程序

1.客户端的ssh操作

[root@localhost ~]# ssh aaa@192.168.10.10

aaa@192.168.10.10's password:

[aaa@localhost ~]$ ifconfig

[aaa@localhost ~]$ exit


2.客户端的scp操作

[root@localhost ~]# scp -o port=16666 root@192.168.10.10:/etc/passwd /opt/bbb.txt ##下载

[root@localhost ~]# scp -P 16666 -r /opt/aaa.txt root@192.168.10.10:/opt/vvv.txt ##上传


3.客户端的sftp操作

[root@localhost ~]# sftp aaa@192.168.10.10

Connecting to 192.168.10.10...

aaa@192.168.10.10's password:

sftp> ls

sftp> put /etc/profile    ##上传到了aaa的宿主目录下,普通用户只能将数据上传到宿主目录,

root可以上传到其他地方直接用cd切换目录

Uploading /etc/profile to /home/aaa/profile

/etc/profile                                  100% 1796     1.8KB/s   00:00    

sftp> ls

profile   

sftp> get profile   ##下载,下载到当前位置

sftp> bye

注释:如果远程服务器修改了端口号,可用下列方法登录sftp

[root@localhost ~]# sftp -o port=8888 root@192.168.10.101


4.Xshell工具(lrzsz)

注意:

rz命令可以上传文件

sz命令可以下载文件:sz /etc/passwd

如果这个命令不能用,就yum  install lrzsz


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

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

1.服务器端设置登陆验证方式

[root@localhost ~]# vi /etc/ssh/sshd_config

修改(都是默认值,不用修改)

      PasswordAuthentication yes

      PubkeyAuthentication yes

      AuthorizedKeysFile      .ssh/authorized_keys       ##指定公钥数据库

[root@localhost ~]# systemctl restart sshd


2.在客户端创建密钥对

[root@localhost ~]# useradd bbb

[root@localhost ~]# passwd bbb

[root@localhost ~]# su bbb

[bbb@localhost root]$ 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:

……

//省略部分内容


3.将公钥文件上传到服务器

[bbb@localhost root]$ scp ~/.ssh/id_rsa.pub root@192.168.10.10:/tmp


4.在服务器中导入公钥文本

[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


5.在客户端使用密钥对验证

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

[aaa@localhost ~]$ ifconfig

[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封装)

[root@localhost ~]# vi /etc/hosts.allow

添加

sshd:61.63.65.67 192.168.10.*


注意:如果不想要192.168.10.0的主机远程,就不要添加


[root@localhost ~]# vi /etc/hosts.deny

添加(大小写不区分)

sshd:ALL