ssh远程管理常用的几种配置(代码片段)

author author     2023-01-29     169

关键词:

一、关于SSH(Secure Shell)

1、SSH是一种安全性通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
2、SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。
3、与早期的telnet(远程登录)、rsh(Remote Shell,远程执行命令)、rcp(Remote File Copy,远程复制)等应用相比,SSH协议提供了更好的安全性。
4、OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。

二、配置OpenSSH服务端

1、首先确认安装客户端和服务端的程序
rpm -qa | grep open
技术分享图片
2、编辑OpenSSH的主配置文件
vi /etc/ssh/sshd_config
下面是配置文件中的一部分配置:

#LoginGraceTime 2m      ===登录宽限时间  
#PermitRootLogin yes     ===允许root登陆
#StrictModes yes         ===开启精确模式
#MaxAuthTries 6         ===最大授权尝试次数
#MaxSessions 10         ===最大连接数
#PermitEmptyPasswords no  ===禁止空密码用户

3、禁止root用户登录
38行 #PermitRootLogin yes 将其改为no
技术分享图片
重启服务客户端验证root用户登录
systemctl restart sshd
技术分享图片
4、允许tom和jack登录
在上述配置末加上允许列表:AllowUsers jack tom //允许Jack、tom登录
技术分享图片
添加tom和jack用户

useradd jack;echo 123123 |passwd --stdin jack
useradd tom;echo 123123 |passwd --stdin tom

技术分享图片
重启sshd服务验证登录(列举jack)
Win+r打开cmd输入
ssh -p 22 [email protected]
技术分享图片
5、开启wheel组增加安全性
上述添加jack用户可以登录,且可以切换root用户,具有安全漏洞如下图:
技术分享图片
进入/etc/pam.d/su切换配置文件中开启wheel组
vi /etc/pam.d/su //在root用户下修改,否则无权限
技术分享图片
重启服务验证jack用户无法切换root
技术分享图片
6、公钥私钥验证
1).一个公钥对应一个私钥。
2).密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
3).如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
4).如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
vi /etc/ssh/sshd_config //root下更改
开启服务器的密钥验证选项:

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

技术分享图片
systemctl restart sshd //重启服务
添加lisi用户绑定服务器上的tom

useradd lisi;echo "123123" | passwd --stdin lisi    //lisi用户作为客户端
su - lisi   //切换到lisi
ssh-keygen -t rsa   //采用rsa加密算法加密

技术分享图片
查看密钥对(id_rsa为私钥,id_rsa.pub为公钥成对出现)
ls /home/lisi/.ssh
技术分享图片
将公钥上传至tom服务器
ssh-copy-id -i id_rsa.pub [email protected]
在服务器tom查看文件

su - tom
ls /home/tom/.ssh

技术分享图片
服务器关闭密码认证vi /etc/ssh/ssh_config 将passwordAuthentication yes改为no,重启服务,这样其他用户要想登录tom服务器必须将私钥发给他才能成功登录,否则无法登录。
7、免密登录:代理(不安全)
在客户端lisi用户下面配置

ssh-agent bash
ssh-add

输入密钥密码
代理成功!无密码直接登录服务器tom!
技术分享图片

vue之路由常用的几种传参方式(代码片段)

Vue之路由常用的几种传参方式第一种方式第二种方式第三种方式第一种方式必须在路由的path上配置相关参数路由配置(必须):path:'/details/:id',name:'Details',component:Details传参toDetails(id) this.$router.push(path:`... 查看详情

得到class类的几种方式与常用方法(代码片段)

得到Class类的几种方式与常用方法Class类Class类的常用方法获得Class类的实例代码如下//测试classs类的创建方式有哪些publicclassTest03publicstaticvoidmain(String[]args)throwsClassNotFoundExceptionPersonperson=newStudent();System.out.println(" 查看详情

ajaxjquery中ajax请求常见常用的几种方法(代码片段)

文章目录jQuery中AJAX请求常见常用的几种方法1.$.ajax()方法2.$.get()方法和$.post(方法)3.$.getJSON()方法jQuery中AJAX请求常见常用的几种方法1.$.ajax()方法可以在服务器端请求失败后依然调用回调函数 $.ajax( "url":"send/array/one.html&... 查看详情

rsync常用的几种备份案例(代码片段)

作者简介:一只在互联网IDC运维的网络攻城狮,网络技术问题可联系QQ:1656209309rsync手工备份配置案例:服务器端:192.168.1.104客户端:192.168.1.501)环境准备说明:192.168.1.104rsyncserver(rsync服务端)192.168.1.50(客户端)2)配置前检查cat/et... 查看详情

元素水平垂直居中的几种常用方法(代码片段)

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>元素水平垂直居中</title><style>/*方式一*/.boxwidth:100px;height:100px;background:red;position:absolute;top:50%;lef 查看详情

简单介绍java中常用的几种线程池(代码片段)

Java中所有线程的创建都来自于同一个父类:java.util.concurrent.ExecutorsextendsObject。只要对Executors的常用API熟悉了,基本上剩下的只是熟练程度的问题了1、 newFixedThreadPoolpublicstaticExecutorServicenewFixedThreadPool(intnThreads) 源码 查看详情

string转int的几种常用方法(代码片段)

String类型转int类型通常需要int的包装类Integer,该类有三个方法可以实现这种转换,分别为decode(Strings)、parseInt(Strings)、valueOf(Strings)。那么他们有哪些不同呢?下面看看API文档中的介绍: decode(Strings):将 String 解码为&nbs... 查看详情

git配置及常用命令(代码片段)

    git的管理方式有两种,分别为ssh和http,http的管理方法比较简单,复杂点的是使用ssh方式来管理远程代码。两种管理方法操作大致相同,但是ssh相较会更加安全,因为需要ssh-key证书认证,而且ssh管道... 查看详情

编译开源库指定安装路径的几种方法(代码片段)

当我们从github中下载一个开源软件(或者库),移植到别的平台时候,通常需要指定安装路径针对cmake管理的工程cmake-DCMAKE_INSTALL_PREFIX:PATH=/xxx...针对makefile管理的工程,通常需要四步./autogen.sh(有的工程没有这种自动配置脚本).... 查看详情

java访问远程接口的几种方式(代码片段)

一.Java访问远程url接口并获取结果1.原生JavaAPI获取packagecom.util;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.UnsupportedEncodingException;importjava.net.HttpURLCon 查看详情

div居中的几种方法(代码片段)

css居中div的几种常用方法在开发过程中,很多需求需要我们居中一个div,比如html文档流当中的一块div,比如弹出层内容部分这种脱离了文档流等。不同的情况有不同的居中方式,接下来就分享下一下几种常用的居中方式。1.text-a... 查看详情

intellijidea远程调试的几种方式(代码片段)

点击关注公众号,实用技术文章及时了解来源:blog.csdn.net/u014513883/article/details/53583495远程服务DEBUG模式启动远程服务以debug模式启动需要执行java命令时带上以下JVM参数java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport... 查看详情

flask配置文件的几种方法(代码片段)

Flask配置文件的几种方法一,属性方式app.env='TESTING'app.debug=True根据app的属性进行环境配置二,字典方式app.config.from_mapping('ENV':'development','DEBUG':True)或者通过字典的key来配置app.c 查看详情

springboot读取配置的几种方式(代码片段)

 读取application文件在application.yml或者properties文件中添加:info.address=USAinfo.company=Springinfo.degree=high@Value注解读取方式12345678910111213141516171819202122232425262728293031323334353637383940importorg.s 查看详情

js判断对象是否为空对象的几种常用方法(代码片段)

1.JSON.stringify将值先转换为JSON字符串,再判断该字符串是否为"",这种我认为时最简单的一种方法。letdata=;letb=(JSON.stringify(data)=="");alert(b)//true为空false不为空2.Object.keys()letdata=;let 查看详情

js判断对象是否为空对象的几种常用方法(代码片段)

1.JSON.stringify将值先转换为JSON字符串,再判断该字符串是否为"",这种我认为时最简单的一种方法。letdata=;letb=(JSON.stringify(data)=="");alert(b)//true为空false不为空2.Object.keys()letdata=;let 查看详情

linux查看日志的几种方法(代码片段)

...好不过的了~(当然,也要习惯在业务关键点设置日志)。最常用查看日志方法:·实时日志:tail-fXXX.log·搜索关键字附近日志:cat-nfilename|grep"关键字"下面详细看下⬇⬇⬇:查看日志常用命令tail:-n是显示行号;相当于nl命令;例子... 查看详情

权限管理的几种方案-写备忘(代码片段)

1.JSONWEBToken(JWT):    一种基于JSON的、用于在网络上声明某种主张的令牌(token)。JWT通常由三部分组成:头信息(header),消息体(payload)和签名(signature)。头信息指定了该JWT使用的签名算法:  header=‘"alg":"HS256","typ":"JWT"... 查看详情