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认证 的相关文章

  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包

随机推荐

  • 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