########################
####9.openssh-server####
########################
####1.openssh-server####
功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell
####2.客户端连接方式####
ssh 远程主机用户@远程主机ip
[root@desktop0 ~]# ssh [email protected]
The authenticity of host '172.25.0.11 (172.25.0.11)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes ##连接陌生主机时需要建立认证关系
Warning: Permanently added '172.25.0.11' (ECDSA) to the list of known hosts.
[email protected]'s password: ##远程用户密码
Last login: Mon Oct 3 03:13:47 2016
[root@server0 ~]# ##登陆成功
ssh 远程主机用户@远程主机ip -X(大写的X) ##调用远程主机图形工具
ssh 远程主机用户@远程主机ip command ##直接在远程主机运行某条命令
举例:
先再真机上查看ip地址 ip addr show br0 (查看真机ip,ip:172.25.78.250/24 )
ip/24 (C类ip地址,前3位是固定的) ip/16(B类ip地址,前两位是固定的) ip/8(A类ip地址,前1位是固定的)
注:(只有同网段的用户才可以远程控制)
(练习时desktop ip:172.25.78.10 server ip:172.25.78.11)
desktop虚拟机下:
ifconfig (查看desktop虚拟机的ip地址)
nm-connection-edtior (配置ip 地址)
ifconfig (查看desktop虚拟机ip地址是否配置好) desktop ip:172.25.78.10
server虚拟机下:
fconfig (查看desktop虚拟机的ip地址)
nm-connection-edtior (配置ip 地址)
ifconfig (查看desktop虚拟机ip地址是否配置好) server ip:172.25.78.11
desktop虚拟机下:
ping 172.25.78.11 (查看是否连通)
ssh [email protected] (在desktop虚拟机中,以server的root用户身份,远程控制server)
cd /root/Desktop (进入server虚拟机的Desktop)
touch file (远程控制server,在server桌面创建file文件)
ssh [email protected] -X(大写) (调用远程主机图形工具,执行gedit命令,编辑图形文档)
gedit qq (此时,在desktop虚拟机下打开qq,进行图形编辑,保存桌面,在server桌面显示qq文件)
####3.sshkey加密####
1.生成公钥私钥
[root@server0 ~]# ssh-keygen ##生成公钥私钥工具
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[enter] ##加密字符保存文件(建议用默认)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): [enter] ##密钥密码,必须>4个字符
Enter same passphrase again: [enter] ##确认密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ab:3c:73:2e:c8:0b:75:c8:39:3a:46:a2:22:34:84:81 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|o |
|E. |
|.. |
|. . o |
|.o. * . S |
|oo.o o . |
|+ =. . . |
|o. oo.+.. |
| ..o*. |
+-----------------+
[root@server0 ~]# ls /root/.ssh/
id_rsa id_rsa.pub
id_rsa ##私钥,就是钥匙
id_rsa.pub ##公钥,就是锁
2.添加key认证方式(给自己用户加锁)
[root@server0 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id ##添加key认证方式的工具
-i ##指定加密key文件
/root/.ssh/id_rsa.pub ##加密key
root ##加密用户为root
172.25.0.11 ##被加密主机ip
3.分发钥匙给client主机
[root@server0 ~]# scp /root/.ssh/id_rsa [email protected]:/root/.ssh/
4.测试
[root@desktop0 ~]# ssh [email protected] ##通过id_rsa直接连接不需要输入用户密码
Last login: Mon Oct 3 03:58:10 2016 from 172.25.0.250
[root@server0 ~]#
举例:
(练习时desktop ip:172.25.78.10 server ip:172.25.78.11)
desktop虚拟机下:
ifconfig (查看desktop虚拟机的ip地址)
nm-connection-edtior (配置ip 地址)
ifconfig (查看desktop虚拟机ip地址是否配置好) desktop ip:172.25.78.10
server虚拟机下:
fconfig (查看desktop虚拟机的ip地址)
nm-connection-edtior (配置ip 地址)
ifconfig (查看desktop虚拟机ip地址是否配置好) server ip:172.25.78.11
在desktop虚拟机下:
cd /root/.ssh
ls -a
rm - rf * (清空root用户下.ssh 中所有文件)
su - student
cd /home/.ssh
ls-a
rm - rf * (清空student下.ssh 中所有文件)
在server虚拟机下:
cd /root/.ssh
ls -a
rm - rf * (清空root用户下.ssh 中所有文件)
在desktop虚拟机下:
ssh-keyen (在root用户下,.ssh目录里生成公钥私钥)
cd /root/.ssh/
ls -a (查看公钥和私钥是否生成成功)
ssh-copy-id - i /root/.ssh/id_rsa.pub [email protected] (给root用户上锁)(给root用户上锁,要经过root用户的同意,所以此时输入root用户的密码)
ssh-copy-id - i /root/.ssh/id_rsa.pub [email protected] (给student用户上锁)(给student用户上锁,要经过student用户的同意,所以输入student用户的密码)
scp /root/.ssh/id_rsa [email protected]:/root/ssh/ (给server用户钥匙,此时输入server虚拟下root用户的密码,确定身份,因为你不能随便给别人家你的钥匙,要确认身份)
杂server虚拟机下:
ssh [email protected] (在server虚拟机中,以desktop用户的root身份进入desktop虚拟机,此时是用钥匙进的desktop虚拟机,不用输入desktop虚拟机下root的密码)
ssh [email protected] (在server虚拟机中,以desktop用户的student身份进入desktop虚拟机,此时是用钥匙进的desktop虚拟机,不用输入desktop虚拟机下student的密码)
####4.提升openssh的安全级别####
1.openssh-server配置文件
/etc/ssh/sshd_config
78 PasswordAuthentication yes|no ##是否开启用户密码认证,yes为支持no为关闭
举例:
在desktop虚拟机下:
vim /etc/ssh/sshd_config (进入远程控制配置文件)
78 PasswordAuthentication no (将78行的yes改为no)
systemctl restart sshd.service (上一条命令更改了ssh服务配置文件,所以重启这个配置文件,让修改的内容生效)
useradd qq
passwd qq (更改密码为qq)
在server虚拟机下:
ssh [email protected](在desktop虚拟机下,没有给qq用户锁,也没有给钥匙,所以只能输入密码连接,进行远程控制,再PasswordAuthentication no 改成no 之后,就显示没有权限连接,因为密码进入这个方式被禁止使用了)
48 PermitRootLogin yes|no ##是否允许超级用户登陆
举例:
在desktop虚拟机下:
vim /etc/ssh/sshd_config (进入远程控制配置文件)
48 PermitRootLogin no (把前面的#去掉,把yes改称no,不允许超级用户登陆)
systemctl restart sshd.service (上一条命令更改了ssh服务配置文件,所以重启这个配置文件,让修改的内容生效)
在server虚拟机下:
ssh [email protected] (显示没有权限,禁止以超级用户的身份亚远程控制)
49 AllowUsers student westos ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell
举例:
在desktop虚拟机下:
vim /etc/ssh/sshd_config (进入远程控制配置文件)
49 AllowUsers student westos(添加用户白名单,只有在名单出现的用户可以使用,此时只有student,westos用户可以让人远程控制)
systemctl restart sshd.service (上一条命令更改了ssh服务配置文件,所以重启这个配置文件,让修改的内容生效)
useradd westos
passwd westos (创建westos用户,改密码为westos)
在server虚拟机下:
ssh [email protected] (因为白名单没有root用户,所以从root用户被远程控制的时候,显示没有权限)
ssh [email protected] (可以从desktop虚拟机下的student用户被远程控制)
ssh [email protected] (可以从desktop虚拟机下的westos用户被远程控制)
50 DenyUsers westos ##用户黑名单
举例:
在desktop虚拟机下:
vim /etc/ssh/sshd_config (进入远程控制配置文件)
50 DenyUsers westos (禁止从westos用户被人远程控制)
systemctl restart sshd.service (上一条命令更改了ssh服务配置文件,所以重启这个配置文件,让修改的内容生效)
在server虚拟机下:
ssh [email protected] (显示没有权限,因为westos已被desktop虚拟机加入黑名单,禁止从westos用户进行远程控制)
2.控制ssh客户端访问
vim /etc/hosts.deny
sshd:ALL ##拒绝所有人链接sshd服务
举例:
在desktop虚拟机下:
vim /etc/hosts.deny
sshd (拒绝所有人链接sshd服务)
在server虚拟机下:
ssh [email protected] (显示ssh_exchange_identification:reda:Connection reset by peer)
ssh [email protected] (显示ssh_exchange_identification:reda:Connection reset by peer)
vim /etc/hosts.allow
sshd:172.25.254.250 ##允许250主机链接sshd
sshd:172.25.254.250, 172.25.254.180 ##允许250和180链接
sshd:ALL EXCEPT 172.25.254.200 ##只不允许200链接sshd
3.ssh登陆提示修改该
vim /etc/motd ##显示登陆后字符
hello world ##在登陆后就会显示这个字符