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版权协议,转载请附上原文出处链接和本声明。