SSH服务详解

SSH服务详解SSH协议及其应用详解

目录

一、什么是ssh

二、SSH 加密技术介绍

三、SSH加密技术说明

四、SSH服务认证类型

4.1 基于密码/口令

4.2 基于秘钥

4.2.1 生成秘钥对 ssh-keygen 命令

4.2.2 上传公钥给远程连接主机 ssh-copy-id

4.2.3 登录验证是否需要密码

五、SSH配置文件🐝

5.1 sshd 服务默认路径

5.2 SSH配置文件修改-默认登录参数

六、SSH服务入侵防范

七、SSH服务相关命令用法


一、什么是ssh

SSH(secure shell protocol),是一种应用在应用层的网络安全协议,用于计算机之间的加密登录。默认情况下SSH服务提供两种功能,一个是远程控制服务器,第二个是对传输的数据进行加密,保护传输数据的安全性

具体软件实现:

  • Openssh:ssh协议的开源软件。Centos默认安装

  • dropbeat:另一个开源软件

使用rpm查看centos里安装的Openssh的软件包

[root@fruit /]# rpm -qa |grep openssh
openssh-clients-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-7.4p1-21.el7.x86_64
[root@fruit /]# 

二、SSH 加密技术介绍

当前,网络上的数据包加密技术一般是通过所谓的一对公钥与私钥(Publickkey and Pivatekey)组合成的秘钥对进行加密与解密操作。比如A-Server要给B-Client传数据,首先会通过本地的公钥加密后再发送到网络上传输。而加密的数据到达B-Client端后,再经过B-Client本地的私钥将加密的数据解密出来。由于在internet上传输过程中的数据是加密过的,所以,传输的数据内容一般来说是比较安全的。

三、SSH加密技术说明

ssh服务实现连接安全连接建立,利用”钥匙”和”锁头”: 钥匙=私钥 锁头=公钥 私钥不能在网络中传输——私钥可以解密公钥(钥匙可以开启锁头) 公钥可以在网络中传输——公钥不能解密私钥

四、SSH服务认证类型

4.1 基于密码/口令

基于口令/密码的安全验证方式,首先要知道服务器的ip地址及开放的SSH端口,默认为22端口,用户名及密码,就可以通过SSH客户端登录到远程主机上面。此时联机过程中所有传输的数据都是加密的。

  • 用XSHELL连接,密码验证测试

    [root@localhost ~]# ssh -p22 root@192.168.222.134 
    # 第一次连接会有如下信息
    The authenticity of host '192.168.222.134 (192.168.222.134)' can't be established.
    ECDSA key fingerprint is SHA256:SkoGN0cC3O34b68E2eOC5pfqyLa3Z+Ro2Nz1Rrd6E0Q.
    ECDSA key fingerprint is MD5:06:28:eb:20:bb:75:e3:b4:01:53:af:67:0e:59:eb:e7.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.222.134' (ECDSA) to the list of known hosts.
    root@192.168.222.134's password: 
    Last login: Tue Aug  2 22:19:22 2022 from 192.168.222.1
    [root@nginx-kafka01 ~]# 
  • 用 w 命令查看访问的用户

[root@nginx-kafka01 ~]# w
 22:27:29 up 13 min,  2 users,  load average: 0.00, 0.02, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.222.1    22:19    1.00s  0.01s  0.00s w
root     pts/1    192.168.222.133  22:20    4:09   0.00s  0.00s -bash
[root@nginx-kafka01 ~]# 

4.2 基于秘钥

基于秘钥的安全验证方式是指:要依靠秘钥,必须实现先建立一对秘钥对,然后把公钥(public key)放到需要访问的目标服务器上。另外,还需要把私钥(private key)放到SSH的客户端或对应的客户端服务器上。

此时,如果想要连接到这个带有公钥的SSH服务器上,客户端SSH软件就会向SSH服务器发出请求,请用联机的用户秘钥进行安全验证,SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下面寻找事先放上去的对应用户的公钥,然后把它和连接SSH客户端发送过来的公钥进行对比,如果两个秘钥一样,SSH服务器就用公钥加密“质询challenge”并把它发送给SSH客户端。

SSH客户端收到“质询”之后就可以用自己的私钥解密,再把它发给SSH服务器,使用这种方式,需要知道联机用户的秘钥文件。

与第一种基于口令的方式相比,第二种不需要在网络上传送口令密码,所有安全性更高了,这时我们也要注意保护我们的秘钥文件,特别是私钥文件,一旦被黑客获取,危险系数增大很多

SSH服务详解

4.2.1 生成秘钥对 ssh-keygen 命令

[root@nginx-kafka01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
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:
SHA256:O3t/0dWcCjggLgf0rsDnzt3t5tcIFVrzxcP+cxZ1O1E root@nginx-kafka01
The key's randomart image is:
+---[RSA 2048]----+
|  ..          o E|
|   ... .   +   *o|
|    o.. . + + o.O|
|.  ..o   + o . *+|
| o .o.  S o . ..=|
|  + .    o   ...=|
|   o    o . o  oo|
|  o . . .+.o ..  |
|   o . .==....   |
+----[SHA256]-----+
[root@nginx-kafka01 ~]# ls .ssh/
id_rsa  id_rsa.pub

4.2.2 上传公钥给远程连接主机 ssh-copy-id

[root@nginx-kafka01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.222.129
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.222.129 (192.168.222.129)' can't be established.
ECDSA key fingerprint is SHA256:kmd86BhVOLiwvCKtK3uFF0ozyMie0MVch+N8R7BX0qk.
ECDSA key fingerprint is MD5:6a:1e:fa:c1:c9:6e:b9:a3:ab:ee:ba:30:ac:26:28:55.
Are you sure you want to continue connecting (yes/no)? yes
/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.222.129's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.222.129'"
and check to make sure that only the key(s) you wanted were added.

4.2.3 登录验证是否需要密码

[root@nginx-kafka01 ~]# ssh root@192.168.222.129
Last login: Tue Aug  2 19:34:34 2022 from 192.168.222.1
[root@fruit ~]# 

五、SSH配置文件🐝

ssh配置文件默认路径 (centos系统下的) /etc/ssh 目录

5.1 sshd 服务默认路径

SSHD服务配置文件

ls -l  /etc/ssh/sshd_config
-rw-------. 1 root root 3907 Apr 11  2018 /etc/ssh/sshd_config

在编辑sshd_config配置文件之前先备份 养成良好的习惯是对自己和公司负责任,备份重要的配置文件防止不当操作

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

5.2 SSH配置文件修改-默认登录参数

修改SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config来实现的.   一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何参数配置.

下面提供一下平常企业中SSH服务配置参数

vim /etc/ssh/sshd_config
Port 52117               #SSH连接默认端口为22,为提高安全性改成0-1024以外的端口号(0-1024很多知名服务已经占用,用了有可能冲突)
PermitRootLogin no       #禁止root用户远程登录,只能使用普通用户登录后切换到root
PermitEmptyPasswords no  #禁止空密码登录
UseDNS  no               #不使用DNS域名解析.打开会导致连接慢,(在连接的时候会反向解析,根据IP地址解析出主机名,没有意义!)
GSSAPIAuthentication no  #关闭GSSAPI认证,每次连接都会认证,在内网使用没必要打开次认证

六、SSH服务入侵防范

企业服务器被入侵案例

如何防止SSH登录入侵小结

  1. 用密钥登录,不用密码登录

  2. 防火墙封闭SSH,指定源IP限制(局域网,信任公网)

  3. 开启SSH只监听本地内网IP(例如:ListenAddress 172.16.1.31)

  4. 尽量不给服务器外网IP

  5. 最小化(软件安装-授权-有用的装没用的不装)

  6. 给系统重要文件或者命令做一个指纹(编写一个脚本,实时监控文件的指纹是否变动,如果变动立即发送邮件进行告警!)

七、SSH服务相关命令用法

scp远程复制数据命令 推送:PUSH

scp -P22 -rp /tmp/shuai.txt geek@10.0.0.21:/tmp

#-P(大写) 接端口号
#-r递归,表示拷贝目录
#-p(小写)表示拷贝前后保持文件或目录的属性
#-l limit 限制速度,在传输大量文件的时候用是此参数可以减少带宽占用,防止因为大量占用带宽导致网络延迟增大
# /tmp/shuai.txt为本地目录文件,"用户名"@"目标IP地址":(远端主机目标目录)

拉取:PULL

scp -P22 -rp root@10.0.0.11:/tmp/shuai.txt    /opt

#还可以把远端目录拉取到本地

今天的文章SSH服务详解分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24397.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注