首页 > 系统相关 > 通过SSH进行安全通信(Linux)

通过SSH进行安全通信(Linux)

时间:2023-11-06 21:33:47浏览次数:32  
标签:公钥 主机 身份验证 通信 SSH ssh Linux 服务器 客户端

一:概述

对于Linux系统来说,系统管理员可以通过SSH协议远程管理Linux进行安全通信.通常情况下,Linux系统管理员会同时管理多台Linx主机。通过SSH协议,用户就可以在多一台主机远程上管理所有的Linux系统。

二:SSH进行安全通信之因

关于SSH,相信你进行远程登录的时候已经有了一点赘述。我们使用SSH命令登录到远程主机中并在远程主机上执行命令,还有scp命令可以将文件在远程主机之间来回传输。SSH是scp是OpenSSH客户端,命令服务器是sshd,由OpenBSD项目开发。

使用ssh命令登录到远程主机或远程主机上执行命令,然后使用scp命令将文件复制到远程主机中。当用户安装了Linux后首次引导(CentOS中)或在安装openssh-server软件包(Ubuntu中)时执行ssh-keygen命令来更改主机的私钥和公钥对。该密钥对ssh默认设置中使用,因此用户可以通过密码进行身份验证登录系统并使用ssh。OpenSSH主要用户身份验证方法如下:

  • 基于主机身份的验证
  • 公钥认证
  • 密码认证

根据客户端请求的优先级依次尝试服务器端提供的方法,客户端的默认优先级为基于主机身份验证、公钥身份验证和密码身份认证。基于主机的身份验证是一种公用密钥身份验证,它使用在/etc/ssh目录下生成的主机私钥和公用密钥的密钥对,基于主机的身份验证和公用密钥身份验证均在客户端执行。这种方式需要对每个用户使用基于主机身份验证和公钥身份验证进行设置,因此在安装过程中只能对将密码验证用作默认设置。

SSH客户端的公开文件~/.ssh/hosts存储ssh服务器的主机名、IP地址和公用密钥。客户端对ssh服务器进行身份验证的过程中ssh登录显示公钥。用户可以在/etc/ssh/sshd_config文件中指定服务器sshd守护程序使用的公用密钥加密方法的优先级,client ssh命令使用的加密方法的优先级可以在/.ssh/config文件或者配置文件/etc/ssh/ssh_config中指定。加密通信路径的顺序如下:

  • 客户端通过ssh命令连接到服务器(sshd守护程序)。
  • 服务器将其在/etc/ssh下的主机公钥发送到客户端。
  • 客户端通过将其存储在~/.ssh/know_hosts文件中的服务器公钥进行比较来验证服务器公钥。在服务器和客户按之间生成共享临时公用密钥。
  • 使用服务器和客户端之间约定的通用密钥加密方法对通信路径加密。
  • 客户端用基于主机的身份验证、公钥身份验证和密码身份验证或密码身份验证登录服务器。

ssh服务器和ssh客户端都使用/etc/ssh目录,ssh客户端引用的该目录下的文件ssh_known_hosts存储了本地系统所有用户使用ssh服务器的公钥。由于/etc/ssh目录下的ssh_known_hosts文件是所有用户执行的ssh命令所引用的文件,因此它必须具有所用用户的读取权限。

                                              通过SSH进行安全通信(Linux)_客户端

SSH是建立在应用层上的安全协议,可靠性还是有保障的,毕竟是专门为远程登录和其他网络服务提供的安全协议。因此,使用SSH进行远程登录还是比较靠谱的。

三:ssh服务器和客户端的默认配置

ssh服务器的配置文件是/etc/ssh/sshd_config,通过目录指定公共密钥认证、密码认证等认证方式的设置以及root的登录许可和拒绝等重要设置。sshd_config文件中的主要指令如下表所示。


指令

说明

AuthorizedKeysFile

用于用户身份验证的公钥存储文件

PasswordAuthentication

密码验证

PermitRootLogin

根登录

Port

备用端口号

PubkeyAuthentication

公钥认证

                                              通过SSH进行安全通信(Linux)_客户端_02

sshd_config文件在安装时的主要默认设置(CentOS),如下表所示:

指令和设定值

说明

#Port

默认端口号为22

#PermitRootLogin yes

yes表示允许root直接登录,默认

#PubkeyAuthentication yes

Yes表示允许公钥认证

#AuthorizedKeysFile

备用端口号

.ssh/authorized_keys

在CentOS中默认值变更为仅.ssh/authorized_keys

#PasswordAuthentication yes

允许密钥验证

#PermitEmptyPasswords no

不允许密钥登录

看过了CentOS中的默任配置,在看看Ubuntu默认配置是什么样子的。/etc/ssh/sshd_config文件默认设置如下表所示。

指令和设定值(Ubuntu)

说明

#Port22

默认端口号是22

#PermitRootLogin prohibit-password

prohibit-password表示不允许通过输入密码进行root登录

#PubkeyAuthentication yes

Yes表示允许公钥认证

#AurhorizedKeysFile

备用端口号

.ssh/authorized_keys

公钥认证

.ssh/authorized_keys2

使用默认值

#PasswordAuthentication yes

允许密钥验证

#PermitEmptyPassword no

不允许密码登录

在Ineternet上设置ssh设置服务器时,更改以下设置可以增强安全性:

    #PermitRootLogin yes更改为PermitRootLogin no,

    #PasswordAuthentication yes更改为PasswordAuthentication no。

<2>ssh服务器上面的默认配置比客户端要复杂的多,有关客户端的配置文件如下:

可以在用户配置文件/.ssh/config或系统配置文件/etc/ssh/ssh_config中设置执行ssh命令时的用户名、端口号和协议等信息。ssh配置文件不仅可以设置与ssh命令选项对应的目录,还可以设置在登录中使用的各种目录.config文件目录信息如下表所示:

指令

选项

说明

identityFile

-i

身份文件

Port

-p(scp命令是-p)

端口号

Protocol

-1或-2

协议版本

User

-l

用户名

客户端上的用户通过ssh命令远程登录时,ssh命令会和服务器那边取得联系验证密钥是否正确,只有正确的情况况下才允许登录。

标签:公钥,主机,身份验证,通信,SSH,ssh,Linux,服务器,客户端
From: https://blog.51cto.com/u_15912723/8217835

相关文章

  • Linux Vim批量注释和自定义注释
    使用Vim编辑Shell脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用":起始行,终止行s/^/#/g",例如::1,10s/^/#/g表示在第1~10行行首加"#......
  • linux 中查看GNU c库版本 libr.so.6(GLIBC版本)
     001、centos7中(base)[root@pc1test]#cat/etc/redhat-release##查看当前系统CentOSLinuxrelease7.6.1810(Core)(base)[root@pc1test]#ldd--version##查看gnuc库版本ldd(GNUlibc)2.17Copyright(C)2012FreeSoftwareFoundatio......
  • Linux操作系统 no.6
    xshell连接虚拟机: 1.查看ip地址点击VMware左上角“编辑”------“虚拟网络编辑器”,点击NAT模式后,点击NAT设置,记住网关ip设置虚拟机的IP地址,子网掩码,网关在终端里输入:vi/etc/sysconfig/network-scripts/ifcfg-en33。进入vim编辑器,然后按i进入编辑模式,按下图进行修改,修改完......
  • Linux操作系统 no.3
    ACL基本用法:getfacl查看ACL权限 setfacl设置ACL权限  setfacl-mu:alice:rw/home/test.txt-m :修改ACL权限-x :可以删除用户对文件的所有权限-b :可以删除所有的扩展ACL权限,回到UGO基本权限 ACL高级特性:最大有效权限 :mask继承 :default 高级权限:修改......
  • linux配置静态ip连接网络
    1.打开虚拟机,打开编辑选择虚拟网络编辑器。选择vmnet8进行编辑,将子网ip设置为192.168.88.0,将子网掩码设置为255.255.255.0,设置网关并且保存2.打开Linux终端输入cd/etc/sysconfig/network-scripts/vimifcfg-ens32编辑 ifcfg-ebs32文件将BOOTPROTO设置为static添加设置......
  • Linux定时任务 - crontab详情
    crontab是一个用于创建、编辑和管理用户的定时任务的命令,可以让用户在指定的时间自动执行指定的命令或脚本。1、crontab语法crontab[OPTION]SCRIPT[OPTION]:选项,SCRIPT:表示可执行的命令或脚本。1.1、OPTION选项-e编辑用户的crontab文件-l列出用户当......
  • Linux p12 查找指令
    搜索查找指令find指令find指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端。基本语法find[搜索范围(指定目录)][选项]选项说明选项功能-name<查询方式>按照指定的文件名查找模式查找文件-user<用户名>查找属于指定用户名......
  • 笔记本共享WIFI到本地网口,网口供 linux 机器提供网络
    1.WLAN属性,设置为共享 2.查询Windows笔记本IP地址 3.  ......
  • linux 文件夹乱码如何重命名和删除
    当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了但是每个文件都有一个i节点号,可以通过i节点号来管理文件。首先,要取得文件的i节点号。这个可以通过ls命令的-i选项获得得$ls-i删除:$find.-inum32983551-execrm{}\;重......
  • Linux_守护进程和部署各类程序的守护进程
    守护进程linux系统进程管理工具systemdsystemd是内核启动后的第一个用户进程,PID为1,是所有其它用户进程的父进程守护进程脚本1.在Linux(ubuntu)中,可以使用nohup命令以守护进程的方式,在后台运行Python脚本。nohup命令可以在终端关闭后继续执行脚本,并将脚本的输出重......