ssh命令,key认证

2023-11-18

1.sshd简介

当主机中开启openssh服务,那么就对外开放了远程连接的接口 openssh服务的服务端,开元的远程连接 
	
sshd= secure shell    # 服务端软件,对外开放一个接口,让别人通过其他途径连接可以通过网络在主机中开机shell的服务 
ssh                   # 客户端软件

(1)连接方式:
	
ssh    username@ip	  # 文本模式的连接
ssh -X username@ip	  # 可以在连接成功后开机图形 

注意:第一次链接陌生主机是要建立认证文件,所以会询问是否建立,需要输入yes,再次链接此台
主机时,因为已经生成~/.ssh/know_hosts文件所以不需要再次输入yes

在这里插入图片描述

(2)远程复制:	

scp file root@ip:dir		 # 上传	
scp root@ip:file dir		 # 下载

2.sshd 的key认证

# 在服务端

(1)生成认证KEY

a.命令的方式生成密钥
[root@desktop ~]# ssh-keygen     # 生成密钥,生成密钥时,均选用默认值

在这里插入图片描述

b.用一条命令生成密钥
[root@desktop ~]# rm -fr /root/.ssh/id_rsa    # 先要删除之前生成的密钥
[root@desktop ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ""       
	 -t                   # type,即锁的类型  
	 -f                   # 生成所的位置以及文件名称
	 -P                   # 密码

在这里插入图片描述

c.用脚本文件生成密钥
[root@desktop ~]# rm -fr /root/.ssh/id_rsa   #先要删除之前生成的密钥
[root@desktop ~]# vim create_keys.sh			

在这里插入图片描述

# 如果不删除的话就会出现以下现象	

在这里插入图片描述

(2)加密服务

[root@desktop ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.138   # 加密
	-id	                        # 加密命令
	 -i	                        # 指定密钥, 即加密的文件
	/root/.ssh/id_rsa.pub	    # 公钥,就是锁 
	/root/.ssh/id_rsa           # 私钥,就是钥匙
	root	                    # 加密用户 
	172.25.254.138	            # 主机ip

在这里插入图片描述

[root@desktop ~]# ls /root/.ssh/    # authorized_keys文件出现表示加密成功
	authorized_keys  id_rsa  id_rsa.pub  known_hosts

(3)分发钥匙,把密钥传给客户端

[root@desktop ~]# scp /root/.ssh/id_rsa root@172.25.254.238:/root/.ssh/

(4)测试

# 在客户端

[root@server ~]# ssh root@172.25.254.138    # 连接服务端时不需要输入密码
	Last login: Thu Oct  4 11:10:06 2018 from 172.25.254.78
[root@desktop ~]# 

# 在客户端删除钥匙,不能免密连接
[root@server ~]# rm -fr /root/.ssh/id_rsa
[root@server ~]# ssh root@172.25.254.138root@172.25.254.138's 
password: 

解决方案:重新再传一份钥匙即可

# 在服务端删除加密文件,客户端也不能连接 
[root@desktop ~]# rm -fr /root/.ssh/authorized_keys

[root@server ~]# ssh root@172.25.254.138    # 在客户端连接测试
password:         # 不能免密
解决方案:
[root@desktop ~]# cp /root/.ssh/id_rsa.pub  /root/.ssh/authorized_keys

# 服务端加密文件删除之后,客户端还可以通过密码连接,修改配置文件之后,就没有连接的权限

[root@desktop ~]# rm   -fr   /root/.ssh/authorized_keys
[root@desktop ~]# vim /etc/ssh/sshd_config 
	78 PasswordAuthentication no
[root@desktop ~]# systemctl restart sshd.service 

# 在客户端测试
[root@server ~]# ssh root@172.25.254.142
	Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
	
解决方案:把配置文件内容修改回来即可

3.sshd的安全设定(/etc/ssh/sshd_config)

78 PasswordAuthentication yes/no      # 是否允许用户通过登陆系统的密码做sshd的认证
48 PermitRootLogin yes|no	      # 是否允许root用户通过sshd服务的认证
52 Allowusers student westos	      # 设定用户白名单,白名单出现默认不在名单中的用户不能使用sshd
53 Denyusers	westos		      # 设定用户黑名单,黑名单出现默认不在名单中的用户可以使用sshd

注:白名单和黑名单只能出现一个

# 在服务端

[root@desktop ~]# vim /etc/ssh/sshd_config
48 PermitRootLogin no
[root@desktop ~]# systemctl restart sshd.service 

#在客户端测试,服务端的root用户不能被连接

在这里插入图片描述
在这里插入图片描述

# 在服务端(设置白名单)
[root@desktop ~]# vim /etc/ssh/sshd_config   # 设置白名单为student 
	52 Allowusers student
[root@desktop ~]# systemctl restart sshd.service 

#在客户端测试,只有student用户可以被连接,其他用户不可以
[root@server ~]# ssh westos@172.25.254.138
[root@server ~]# ssh student@172.25.254.138

在这里插入图片描述

# 在服务端(设置黑名单)
[root@desktop ~]# vim /etc/ssh/sshd_config
	53 Denyusers student
[root@desktop ~]# systemctl restart sshd.service 

#在客户端测试,只有student用户不可以被连接,其他用户都可以
[root@server ~]# ssh student@172.25.254.138
[root@server ~]# ssh westos@172.25.254.138	

在这里插入图片描述

4.添加sshd登陆登陆信息

# 在服务端设置登录信息
[root@desktop ~]# vim /etc/motd  # 文件内容就是登陆后显示的信息

在这里插入图片描述

# 在客户端测试
[root@server ~]# ssh westos@172.25.254.138

在这里插入图片描述

5.用户的登陆审计

(1)w		# 查看正在使用当前系统的用户	
	-f	# 查看使用来源	
	-i	# 显示IP		

在这里插入图片描述

/var/run/utmp     # 记录着当前登录的用户,清空文件就不会用w查看到

[root@desktop ~]# > /var/run/utmp
[root@desktop ~]# w
 22:37:57 up  1:30,  0 users,  load average: 0.00, 0.01, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT

(2)last		 # 查看使用过并退出的用户信息	

在这里插入图片描述

/var/log/wtmp             # 记录所有的登入和登出的用户,清空文件后,用last查看不到

[root@desktop ~]# > /var/log/wtmp     
[root@desktop ~]# last

wtmp begins Fri Oct 12 22:39:23 2018

(3)lastb		 # 试图登陆但没成功的用户

在这里插入图片描述

/var/log/btmp                                  #  记录错误的尝试登陆,清空文件后lastb就不会查到

[root@desktop ~]# > /var/log/btmp
[root@desktop ~]# lastb

btmp begins Fri Oct 12 22:39:02 2018

6.ssh的排错

加密完之后,私钥和公钥不能配合使用,是因为当前shell出了问题

解决方案:
1.关闭当前shell,重新打开一个shell
2.ssh-agent   bash   
3.ssh-add    id_rsa   # 把私钥添加到当前shell中

7.练习

题目:复制172.25.254.100上/mnt目录下的ip_rsa文件,使得这台主机连接我的student用户是免密连接

[root@desktop ~]# scp root@172.25.254.100:/mnt/id_*  /root/.ssh
[root@desktop ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub student@172.25.254.142 	

测试:(用172.25.254.100这台主机连接我的student用户)如果是免密,则成功 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ssh命令,key认证 的相关文章

  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读

随机推荐

  • element-ui 通过变量修改默认样式

    项目用的是 element ui vue 项目里有个需求是要修改 element 消息提示组件中 warning 类型的背景色和那个小感叹号的背景色 有两种方式 第一种比较简单 用 F12 找到想要修改的元素 直接覆盖对应样式 但考虑到有时
  • 机械臂控制C语言程序,ROS机械臂开发:MoveIt!编程

    一 编程接口 提供C Python GUI 命令行等接口 move group节点 Python和C 接口示例 MoveIt关注更多的是plan工作 后面的execute需要控制器执行 MoveIt只是监控功能 编程步骤 连接控制需要的规划
  • Qt中LineEdit、TextEdit 、PlainTextEdit三个控件的区别

    Qt中LineEdit TextEdit PlainTextEdit这三个控件区别为 输入格式不同 用途不同 限制行数不同 一 输入格式不同 1 LineEdit LineEdit的输入格式为单行文本输入 2 TextEdit TextEd
  • 亚马逊云aws12个月免费服务器搭建小结 (

    转载自 http blog sina com cn s blog 53a30a3b0101hdx9 html 本文小结了在亚马逊aws Amazon Web Services 云计算服务上注册一个免费的服务器的方法和一些注意事项 郑重申明
  • java中string与json互相转化

    在Java中socket传输数据时 数据类型往往比较难选择 可能要考虑带宽 跨语言 版本的兼容等问题 比较常见的做法有两种 一是把对象包装成JSON字符串传输 二是采用java对象的序列化和反序列化 随着Google工具protoBuf的开
  • 数据结构实验1-顺序表-各种操作

    要求 创建两个顺序表实现两个顺序表的合并以及扩容 以及单个顺序表的查找 插入 删除 排序 清空 销毁 查找前驱以及后继等等 有错会继续改的 以及程序的完备性 健壮性 可读性等等 经过这次实验感觉我写的最多的不是程序而是告诉程序执行者下一步该
  • C语言程序设计(张玉生)第四章课后习题编程(分支结构程序设计)

    1 编写程序 输入一个整数 判断它是奇数还是偶数 并输出判断结果 include
  • [学习笔记] EL 使用EL表达式获得作用域属性

    采用EL表达式 对于属性的访问的隐含访问顺序是 pageContext httpServletRequest HttpSession ServletContext 通过以下实例 来说明 servlet scopeVar java impor
  • ADS系列 - RLC器件滤波器设计教程1

    相关文章 ADS SystemVue 文章集合页 ADS系列 定向耦合器设计教程1 ADS系列 混频器设计 混频器原理介绍及仿真1 ADS系列 低噪声放大器 LNA 模型下载安装及 LNA仿真设计 Keysight的 SystemVue 介
  • Spring+Redis 存入Key Value 乱码前缀

    今天试着在项目中读写redis对象 发现全是乱码 如下图所示 而后在网上找了些资料 才知道是序列化问题 目前已解决谨此记录 以防再犯 ApplicationContext context new ClassPathXmlApplicatio
  • 机房软件管理服务器及系统软件,高校机房软件自动化部署管理系统的设计及实现...

    摘要 随着我国高等学校计算机教育的飞速发展 计算机作为一种重要的信息化工具受到越来越大的重视 计算机在各个学科中也发挥着越来越重要的作用 现在计算机在高校中是公共必修课 而且开设了更多的计算机应用专业课 高等院校计算机机房的规模也越来越大
  • 使用WireShark协议分析仪来分析ICMP与FTP协议

    这是网络第2次试验 wireshark分析仪网站 http www wireshark org 了解ICMP协议 ICMP Internet Control Message Protocol 网际报文控制协议 是Internet协议族的核心
  • python中 r什么意思_python中w、r指的是什么意思

    python中w r指的是什么意思 发布时间 2020 11 20 10 54 44 来源 亿速云 阅读 100 作者 小新 这篇文章将为大家详细讲解有关python中w r指的是什么意思 小编觉得挺实用的 因此分享给大家做个参考 希望大家
  • Ubuntu安装GMP库、PBC library

    历时一周终于安装完成 期间犯了太多错误 都是一点一点查的 Pbc library 库的安装依赖于如下四个文件 GMP Library M4 flex bison 其中在Linux系统中 M4 flex bison 均可以通过 apt get
  • 为什么Precision高Recall就低——F1 score

    梳理一下公式 sensitivity recall Precision和Recall虽然从计算公式来看并没有什么必然的相关性关系 但是 在大规模数据集合中 这2个指标往往是相互制约的 理想情况下做到两个指标都高当然最好 但一般情况下 Pre
  • 什么是护网(HVV)?需要什么技能?

    HVV介绍 1 什么是护网 护网的定义是以国家组织组织事业单位 国企单位 名企单位等开展攻防两方的网络安全演习 进攻方一个月内采取不限方式对防守方展开进攻 不管任何手段只要攻破防守方的网络并且留下标记即成功 直接冲到防守方的办公大楼 然后物
  • git软件代码提交详解

    git提交代码流程 git提交代码时 不能把代码直接提交到master分支 需要切换到一个子分支 然后把要提交的代码上传到子分支 然后将子分支合并到master分支上 提交步骤 1 创建并切换到子分支 git checkout b 子分支名
  • Linux软硬链接的区别

    1 概念 软链接 软链接又叫符号链接 这个文件包含了另一个文件的路径名 可以是任意文件或目录 可以链接不同文件系统的文件 硬链接 就是一个文件的一个或多个文件名 硬链接就是让多个不在或者同在一个目录下的文件名 同时能够修改同一个文件 其中一
  • 16.odoo入门——初探后台启动过程(三)

    第16天 终于周五 迎来难得的双休 上次说到 运行如下代码 rc odoo service server start preload preload stop stop 又调用了odoo service server py下的start函数
  • ssh命令,key认证

    1 sshd简介 当主机中开启openssh服务 那么就对外开放了远程连接的接口 openssh服务的服务端 开元的远程连接 sshd secure shell 服务端软件 对外开放一个接口 让别人通过其他途径连接可以通过网络在主机中开机s