一:配置服务端
添加测试账号,aaa
1:服务监听选项
[root@localhost ~]# setenforce 0
注意:如果不关闭selinux,不能修改端口号
[root@localhost ~]# vi /etc/ssh/sshd_config
修改
17 Port 22 \监听的端口
19 ListenAddress 192.168.10.10 \监听的IP
23 Protocol 2 \ssh的v2版本
129 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
windows客户端
使用xshell
2:用户登录控制
[root@localhost ~]# vi /etc/ssh/sshd_config
修改
48 LoginGraceTime 2m \允许一次登录花费登陆验证的时间
49 PermitRootLogin no \为了后面的实验,不禁用root,在前面加#注释掉
51 MaxAuthTries 6 \登陆次数(输错密码的次数)
78 PermitEmptyPasswords no \禁止空密码用户登录
43 #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客户端程序
1):客户端的操作
[root@localhost ~]# ssh aaa@192.168.10.10
aaa@192.168.10.10's password:
[aaa@localhost ~]$ ifconfig
[aaa@localhost ~]$ exit
[root@localhost ~]# scp root@192.168.10.10:/etc/passwd /usr/ccc.txt \下载,在AllowUsers中添加root
[root@localhost ~]# scp -o port=16666 root@192.168.10.10:/etc/passwd /opt/bbb.txt
root@192.168.10.10's password:
passwd 100% 1668 1.6KB/s 00:00
[root@localhost ~]# scp -r /usr/src/text.html root@192.168.10.10:/usr \上传
[root@localhost ~]# scp -P 16666 -r /opt/aaa.txt root@192.168.10.10:/opt/vvv.txt
root@192.168.10.10's password:
text.html 100% 0 0.0KB/s 00:00
3)客户端的sftp操作
[root@localhost ~]# sftp aaa@192.168.10.10
Connecting to 192.168.10.10...
aaa@192.168.10.10's password:
sftp> cd /opt
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
[root@localhost ~]# sftp -P 8888 root@192.168.10.101
4):Xshell工具
打开win2008
安装Xshell
注意:
rz命令可以上传文件
sz命令可以下载文件:sz /etc/passwd
如果这个命令不能用,就yum install lrzsz
三:构建密钥对验证ssh体系
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 \创建密钥
[bbb@localhost root]$ ls -lh ~/.ssh/id_rsa*
-rw-------. 1 bbb bbb 1.7K 12月 3 17:00 /home/bbb/.ssh/id_rsa
-rw-r--r--. 1 bbb bbb 407 12月 3 17:00 /home/bbb/.ssh/id_rsa.pub
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
四:TCP Wrappers访问控制 (TCP封装)
[root@localhost ~]# ldd /usr/sbin/sshd | grep "libwrap"
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f7f1d588000)
[root@localhost ~]# vi /etc/hosts.allow
添加
sshd:61.63.65.67 192.168.10.*
[root@localhost ~]# vi /etc/hosts.deny
添加(大小写不区分)
sshd:ALL