【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

这篇具有很好参考价值的文章主要介绍了【Linux网络】ssh服务与配置,实现安全的密钥对免密登录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、SSH基础

1、什么是ssh服务器

2、对比一下ssh协议与telnet协议

3、常见的底层为ssh协议的软件:

4、拓展

二、SSH软件学习

1、ssh服务软件学习 

2、sshd公钥传输的原理:

3、ssh命令学习:

4、学习解读sshd服务配置文件:

三、ssh服务的应用

1、使用密钥对免密码登录

第一步:在客户端自己生成一对密钥(使用命令ssh-keygen)

第二步:将公钥文件导入给服务器,检查自己会产生一个known_hosts文件,服务器对应用户的家目录的.ssh目录下也会产生一个authorized_keys文件。

第三步:验证是否免密:(这个是单向的,如果需要服务器也能连接客户端,那么还需要在服务器同样做设置)

 2、黑白名单设置

黑白名单的语法:

第一种:白名单

第二种: 黑名单


一、SSH基础

1、什么是ssh服务器

ssh是一种安全通道协议,主要用来实现远程登录、数据传输等;ssh协议对通信双方的数据传输进行加密处理,其中包括用户登录时输入的用户口令,ssh为建立在应用层和传输层基础上的安全协议。

2、对比一下ssh协议与telnet协议

telnet协议:是明文的,端口号是tcp的23端口;

ssh协议:数据传输是加密的,可以防止信息泄露;数据传输是压缩的,可以提高传输的速度;端口是tcp的22端口;

SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

3、常见的底层为ssh协议的软件:

Linux客户端: ssh, scp, sftp,slogin

Windows客户端:xshell, MobaXterm,putty, securecrt

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

执行"systemctl start sshd"命令即可启动sshd 服务

4、拓展

Windows上自带的远程连接工具是mstsc,是使用的tcp的3389端口,使用的RDP协议

免密登录known_hosts,linux,网络,ssh

免密登录known_hosts,linux,网络,ssh

 免密登录known_hosts,linux,网络,ssh

二、SSH软件学习

1、ssh服务软件学习 

软件名:openssh(在centos7中为openssh-server)
服务名称:sshd
服务端主程序:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config ##ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
客户端配置文件:/etc/ssh/ssh_config

2、sshd公钥传输的原理:

免密登录known_hosts,linux,网络,ssh

  • 客户端发起连接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID(异或是算法,有很多种),计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

原理是这样,但是在实际操作中客户端把服务器的公钥记录在了~/.ssh/known_hosts文件中

免密登录known_hosts,linux,网络,ssh

拓展:

思考我们登录时怎么确认是不是我需要连接的服务器?(有个前提是我能碰的着服务器)

首先在客户端连接服务器:

免密登录known_hosts,linux,网络,ssh

服务器连接自己试试:

免密登录known_hosts,linux,网络,ssh

3、ssh命令学习:

ssh命令的语法:ssh [选项] 用户名@服务器ip地址或域名
选项:
-p 端口号:不加默认是22号端口,如果是端口被修改了,需要指定端口号;
-l 用户名:这个和“用户名@”效果一样;
-t 跳板机服务器ip地址:比如需要访问外网的时候,需要先过内外网服务器等等;
-o 配置文件参数变量值:比如ssh 192.168.20.10 -o StrictHostKeyChecking=no (允许免密登录)

ssh 还能直接跟上命令
如:
ssh 192.168.91.101 hostname (显示远程服务器的主机名)

4、学习解读sshd服务配置文件:

[root@localhost /]#vim /etc/ssh/sshd_config 
 17 #Port 22  
 ##这是sshd服务监听的端口,为了安全起见,建议更改默认端口为一个五位数以上的端口号
 18 #AddressFamily any
 19 #ListenAddress 0.0.0.0 ##可以改为自己的自己的ip地址
 20 #ListenAddress ::##用来设置sshd服务器绑定的IP地址
 
 32 SyslogFacility AUTHPRIV  
 33 #LogLevel INFO
 ##当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV,sshd 服务日志存放在:/var/log/secure。
 ##可以做日志分离优化
 ##LogLevel用来设定sshd日志消息的级别,与上面记录的等级息息相关
 
 35 # Authentication:
 ##限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒
 
 37 #LoginGraceTime 2m
 ##LoginGraceTime用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为妙
 
 38 #PermitRootLogin yes
 ##PermitRootLogin用来设置能不能以root身份ssh登录,

 40 #MaxAuthTries 6
 ##用来设置最大失败尝试登陆次数为6
 
 41 #MaxSessions 10
 ##设置同一个连接最大会话
 
 43 #PubkeyAuthentication yes
 ##基于key验证(生产中需要打开)

 63 #PasswordAuthentication yes
 64 #PermitEmptyPasswords no  ##是否允许空密码登录,no表示不允许,需要密码!!
 ##密码验证建议还是需要的!可以通过认证的秘钥来登陆,来减少密码交互。
 65 PasswordAuthentication yes
 ##基于用户名和密码连接,默认为yes

 96 UsePAM yes
 ##设置是否通过PAM验证,需要的
 98 #AllowAgentForwarding yes  ##允许代理
 99 #AllowTcpForwarding yes  ##允许tcp那个代理
100 #GatewayPorts no  
##设置是否允许远程客户端使用本地主机的端口转发功能,出于安全考虑,建议禁止

115 #UseDNS no
##UseDNS是否使用dns反向解析,建议关闭,内网改为no可以提高速度

这是可以添加的选项:
#AllowUsers<用户名1> <用户名2> <用户名3> ...
##指定允许通过远程访问的用户,多个用户以空格隔开
比如:AllowUsers zhangsan@192.168.91.101  lisi
##默认拒绝所有
##允许所有的主机访问我的lisi用户
##只允许192.168.91.101上的所有用户访问本机的zhangsan用户

#AllowGroups<组名1> <组名2> <组名3> ...
##指定允许通过远程访问的组,多个组以空格隔开。当多个用户需要通过ssh登录系统时,可将所有用户加入一个组中。

#DenyUsers<用户名1> <用户名2> <用户名3> ...
##指定禁止通过远程访问的用户,多个用户以空格隔开
举例:DenyUsers  liwu
#拒绝liwu被访问

#DenyGroups<组名1> <组名2> <组名3> ...
##指定禁止通过远程访问的组,多个组以空格隔开。

免密登录known_hosts,linux,网络,ssh

三、ssh服务的应用

1、使用密钥对免密码登录

第一步:在客户端自己生成一对密钥(使用命令ssh-keygen)

##使用命令生成一对密钥
[root@localhost .ssh]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##默认放在用户的家目录下的~/.ssh/下
Enter passphrase (empty for no passphrase): ##对密钥文件加密,密码至少5个字符
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:VqCGTmM6KO1NlBm1NNuCUZYE7ZXsCrZedcKdDaS4kFQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|    =BEo.o.      |
|   . @oB+o.      |
|    %.B+o..+     |
| o *o+.o=.+ .    |
|o +.oo.oSo       |
|.. +. o.         |
|  ....           |
|    .            |
|                 |
+----[SHA256]-----+
##验证密钥对成功创建
[root@localhost .ssh]#ls
id_rsa  id_rsa.pub

免密登录known_hosts,linux,网络,ssh

第二步:将公钥文件导入给服务器,检查自己会产生一个known_hosts文件,服务器对应用户的家目录的.ssh目录下也会产生一个authorized_keys文件。

免密登录known_hosts,linux,网络,ssh

免密登录known_hosts,linux,网络,ssh

第三步:验证是否免密:(这个是单向的,如果需要服务器也能连接客户端,那么还需要在服务器同样做设置)

免密登录known_hosts,linux,网络,ssh

 2、黑白名单设置

黑白名单的语法:

#AllowUsers<用户名1> <用户名2> <用户名3> ...
##指定允许通过远程访问的用户,多个用户以空格隔开
比如:AllowUsers zhangsan@192.168.91.101  lisi
##默认拒绝所有
##允许所有的主机访问我的lisi用户
##只允许192.168.91.101上的所有用户访问本机的zhangsan用户

#AllowGroups<组名1> <组名2> <组名3> ...
##指定允许通过远程访问的组,多个组以空格隔开。当多个用户需要通过ssh登录系统时,可将所有用户加入一个组中。

#DenyUsers<用户名1> <用户名2> <用户名3> ...
##指定禁止通过远程访问的用户,多个用户以空格隔开
举例:DenyUsers  liwu
#拒绝liwu被访问

#DenyGroups<组名1> <组名2> <组名3> ...
##指定禁止通过远程访问的组,多个组以空格隔开。

第一种:白名单

[root@localhost ssh]#vim /etc/ssh/sshd_config
#手动添加
AllowUsers zhangsan@192.168.20.10
##表示只允许192.168.20.10主机上的任意用户能够连接zhangsan
##并且默认拒绝所有

免密登录known_hosts,linux,网络,ssh

第二种: 黑名单

##服务器上添加黑名单
[root@localhost .ssh]#vim /etc/ssh/sshd_config 

  2 DenyUsers xueyin@192.168.20.10

免密登录known_hosts,linux,网络,ssh

免密登录known_hosts,linux,网络,ssh

免密登录known_hosts,linux,网络,ssh

拓展:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!报错

翻译为:提醒你远程主机的身份已经修改了;

系统之前连接过192.168.20.10,记录了它的公钥,现在换了一台主机ip也是这个,但是公钥与缓存不一致,所以ssh好心提醒一下;

解决思路:根据生产环境需求,如果是安全的,那么删掉本地的密钥缓存(删除~/.ssh/known_hosts文件中的对应192.168.20.10的公钥)。

免密登录known_hosts,linux,网络,ssh文章来源地址https://www.toymoban.com/news/detail-762200.html

到了这里,关于【Linux网络】ssh服务与配置,实现安全的密钥对免密登录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux ssh 密钥配置

    1、说明:         1、ssh:Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。         2、与telnet和sftp的区别:FTP、Telnet是再网络中明文传送数据、用户帐号和密码。

    2024年02月16日
    浏览(39)
  • linux ssh常用配置密钥登录

    SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地传输数据。它可以提供远程登录和文件传输等功能。在 Linux 系统中,常用的 SSH 客户端是 OpenSSH,它可以通过命令行界面连接到远程主机,并在远程主机上执行命令。同时,OpenSSH 还提供了 scp 命令,用于在本

    2024年01月23日
    浏览(46)
  • CentOS/Linux系统安装SSH并配置SSH登录密钥

            CentOS/Linux系统命令行输入如下命令:         用vim打开配置文件 /etc/ssh/sshd_config         将上图的 PermitRootLogin , RSAAuthentication , PubkeyAuthentication 的设置为YES      

    2024年02月16日
    浏览(49)
  • 【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

    创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen ,之后一直按Enter即可,这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意:也可以在 windows 端生成密钥,只需要保证公钥在服务器端,私钥在本地端即可。 安装 在服务器端 ~/.ssh/ 路径下执行以下命令,在

    2024年02月16日
    浏览(62)
  • 【linux】linux设置ssh密钥登录详细教程,附Mobaxterm和pycharm ssh python解释器配置教程

    我们通常使用SSH 客户端来远程使用 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。但是即使是将端口设置为22之外的端口也容易泄露。为了保证服务器安全,此时

    2024年02月13日
    浏览(83)
  • Linux Debian11服务器安装SSH,创建新用户并允许SSH远程登录,及SSH安全登录配置

    一、在 Debian 中添加 sudo 用户 1.创建新用户 首先,要创建用户,当前用户必须是 root 用户或者 sudo 用户。 使用下面adduser 命令创建一个用户名为test的sudo用户,按照提示输入密码,使用 adduser 命令,还会创建用户的主目录。 sudo adduser test 2.将用户成为 sudo 用户 创建test用户后,

    2024年02月05日
    浏览(66)
  • Linux Debian11服务器安装SSH,创建新用户并允许SSH远程登录,及SSH安全登录配置!

    在Debian 11服务器上安装SSH并创建新用户允许SSH远程登录的步骤如下: 步骤1:安装SSH 为了安装SSH服务器,您需要以root用户或具有sudo特权的用户身份登录到您的Debian 11服务器。 在终端中执行以下命令来安装SSH服务器: 步骤2:创建新用户 要创建一个新用户,您可以使用  add

    2024年02月12日
    浏览(54)
  • Paramiko是一个Python实现的SSH2远程安全连接模块,它支持认证及密钥方式。

    Paramiko是一个Python实现的SSH2远程安全连接模块,它支持认证及密钥方式。 具体来说,Paramiko是一个用于实现SSHv2协议的模块,它可以用于创建SSH客户端或服务器端。通过使用Paramiko,你可以连接到远程服务器、执行命令、传输文件等操作。Paramiko还支持多种认证方式,包括口令

    2024年02月03日
    浏览(59)
  • Xshell “所选的用户密钥未在远程主机上注册,请再试一次”SSH 登录远程linux服务器(良心整理)

    这个问题真的要把我逼疯了,为什么呢? 为了解决这个问题,我搜遍了CSDN、知乎、简书上的解决方案,CSDN上的回答真的是水文太多,相互抄,抄就抄吧,只抄一半。这让真正想解决问题的人走了太多的弯路。 也不知道是谁写的原文,可能作者解决了,但是写的很不清楚,也

    2023年04月15日
    浏览(45)
  • 如何在Linux Archcraft中配置SSH服务并结合内网穿透实现远程连接

    Archcraft是一个基于Arch Linux的Linux发行版,它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。 Cpolar是一种安全的内网穿透云服务,可以将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务,是一款内网穿透软件。

    2024年03月18日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包