ssh服务
学习思路:
所有服务的学习思路如下:
- 1.是什么?掌握原理
- 2.安装配置、调试、排错
- 3.修改配置文件
- 4.日志(排错、查看记录)
- 5.安全
1.是什么?掌握原理
ssh (secure shell),用来远程管理(远程控制)服务器,并且网络上传输的内容是进行了加密。
ssh是一个应用层的协议
openssh 是一个软件,底层使用ssh协议来远程管理服务器,这个软件是开源免费的。
认证方式:
1.密码认证:从/etc/passwd, /etc/shadow中验证
2.密钥认证:配置sshd里的密钥 ,它更加安全ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据
openssh官网链接: I’m here.
1.1 加密技术
SSH基于公钥加密(非对称加密)技术
1.数据加密传输
2.客户端和服务器的身份验证公钥(Public Key)和私钥(Private Key)
公钥和私钥是成对生成的,这两个密钥互不相同,两个密钥可以互相加密和解密
不能根据一个密钥而推算出另外一个密钥
公钥对外公开,私钥只有私钥的持有人才知道
私钥应该由密钥的持有人妥善保管
根据实现的功能不同,可以分为数据加密和数字签名密钥的2个用途:
1.数据加密
2.数字签名:用于身份识别
1.2 常见端口号
- web:
1.http-port:80
2.https-port:443 - telnet-port:23
- ssh-port: 22
- mysql-port:3306
想了解更多的端口号的话,有前人已经整理过,请点击下面的连接。
i’m here
1.3常见问题
- 问: windows里默认安装了openssh吗?
答案:no - openssh主要是在linux和unix系统里使用,如下
AIX
HP-UX
Linux
Solaris
Digital Unix/Tru64/OSF
Mac OS X
。。。等 - 客户机使用ssh第一次连接服务器时,将服务器上sshd守护进程的公钥复制到本地,存放到本地~/.ssh/known_hosts文件中 ,存放我们曾经登陆过的linux服务器的公钥。 .ssh/authorized_keys ,保存可以使用公钥远程连接到本机的公钥,别人使用公钥连接我们本机
2.安装配置、调试、排错
openssh软件默认在centos6,7,8系统里已经安装,不需要需要了
rpm -qa|grep openssh
openssh-clients-7.4p1-16.el7.x86_64 #提供客户端命令的软件包
openssh-7.4p1-16.el7.x86_64 #提供了生成密钥的软件包
openssh-server-7.4p1-16.el7.x86_64 #提供服务端的软件包
3.修改配置文件
#查看配置文件的手册,里面会详细的对每一个配置进行说明和介绍
man sshd_config
man 5 sshd_config
上面的命令会将配置文件中的每一项解释清楚。(不过是英文的哦!)下面有强大的网友整理的连接:
i’m here,no 1
i’m here,no 2
修改了配置文件一定要重新启动服务,才会生效
service sshd restart
或
systemctl restart sshd.service
2.1 shell编程
- 编写一个脚本,扫描局域网内有哪些服务器开放了22端口的
#!/bin/bash
#扫描网段192.168.0.1-254,
#定义统计22端口和3306端口服务器开启的数量
open_22=0
>open_ssh_pc.txt
for i in $(seq 254)
do
( if ping 192.168.0.${i} -c 1 -i 0.01 -w 1 &>/dev/null;then #判断ip是否存活
if ncat -z 192.168.0.${i} 22 &>/dev/null;then #判断22服务器是否开启
echo "服务器192.168.0.${i}开启了22号端口" >>open_ssh_pc.txt
fi
fi) &
done
wait
open_22=$(cat open_ssh_pc.txt |wc -l)
echo "共有$open_22个服务器使用22号端口"
2.2 python中的ssh模块
- paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输。更多详情请点击下面的链接。
i’m here
4.日志(排错、查看记录)
查看/var/log/secure
5.安全
1.修改端口号
2.禁用root用户登陆
3.启用密钥认证
4.密码设置复杂点
- 密钥认证–》建立免密通道
1.在客户机上root用户登陆的情况下,创建密钥对
[root@localhost ~] ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/root/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ecdsa.
Your public key has been saved in /root/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:67hwRO87WrS3H48Uf9TFQhnyvcmmNhv9jtg46H2KDlE root@localhost.localdomain
The key's randomart image is:
+---[ECDSA 256]---+
| . oo |
| +.o |
| . E o +|
| . . . ..=|
| . S . =o|
| . o + o+. |
| . . * ..o=...|
| o +.+.=oB=o.|
| +oo+=.B=+.o|
+----[SHA256]-----+
[root@localhost ~]
[root@localhost ~] cd .ssh/ 存放密钥的文件夹
[root@localhost .ssh]# ls
id_ecdsa id_ecdsa.pub known_hosts
#id_ecdsa.pub 公钥
#id_ecdsa 私钥
第2步:上传公钥到服务器里
[root@localhost .ssh]# ssh-copy-id -i id_ecdsa.pub root@192.168.0.103 -p 22
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_ecdsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.103's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' 'root@192.168.0.103'"
and check to make sure that only the key(s) you wanted were added.
3.验证免密通道是否配置成功
[root@localhost .ssh]# ssh root@192.168.0.103
Last login: Mon Jul 13 17:02:14 2020 from 192.168.0.83
[root@localhost ~]#
版权声明:本文为weixin_44514338原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。