SSH简述
远程访问及控制
1、SSH
1.1 简单介绍
SSH协议(secure shell)
是一种安全通道协议
对数据进行加密处理,用于远程管理
OpenSSH(安装包名,centos7自带)
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
优点:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
使用
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。
1.2 传输原理

第一次连接时,客户端发起请求
服务端生成会话id,会将会话id和服务端的公钥交给客户端
客户端得到服务端的公钥和会话id
客户端用户通过会话id与自己的公钥生成一个值,再将这个值通过服务端的公钥加密
客户端将加密后的值传给服务端,服务端利用自己的私钥解密得到客户端的公钥和客户端的会话id

免密登录
第一步生成密钥
ssh-keygen -t指定加密方式,默认rsa
Enter file in which to save the key (/home/lisi/.ssh/id_ecdsa):
#选择密钥文件存放位置,默认在当前用户家目录下 .ssh文件夹中
会生成两个文件,带.pub是公钥,要传给服务器
Enter passphrase (empty for no passphrase):
#对密钥文件进行加密,如果设置了密码,只是对文件进行加密,打开需要密码
ssh-copy-id -i服务器地址#将密钥传给服务器
登录

#登录 方法一:
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
命令 端口号
vim /etc/hosts
192.168.91.101 node2
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
jAdnvemeML+z00Zmk/SL5PWDVEvJqwPFID3iae+Xf4g.
jAdnvemeML+z00Zmk/SL5PWDVEvJqwPFID3iae+Xf4g.
例子:
#默认使用22端口 root(登录对方的用户)加IP 地址,首次登录会询问,并要求输入密码
[root@31yml /]#ssh 192.168.177.200
The authenticity of host '192.168.177.200 (192.168.177.200)' can't be established.
ECDSA key fingerprint is SHA256:n6/OvgUhDi1cUlAFBjSt5QMt68EYA5fwnPZRQxHBR+c.
ECDSA key fingerprint is MD5:dc:49:1d:d0:21:f2:4f:79:3f:e6:e6:29:a8:4e:33:c4.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '192.168.177.200' (ECDSA) to the list of known hosts.
root@192.168.177.200's password:
Last login: Fri Aug 4 00:46:23 2023
########方便编写脚本#####################
[root@31yml ~]#vim /etc/ssh/ssh_config
#修改客户端配置文件 无需验证,有安全隐患
35 StrictHostKeyChecking no
#登录方法二
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p: -p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
-t
例子:
[root@31yml ~]#ssh -l root 192.168.91.101
root@192.168.91.101's password:
Last login: Tue Sep 28 22:25:40 2021 from 192.168.91.100
1.3 服务端配置
1.3.1常用项配置

[root@ky15-1 ~]# vim /etc/ssh/sshd_config
17 Port 22
#生产建议修改
ListenAddress ip
#监听地址设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址 这个值可以写成本地IP地址,也可以写成所有地址,即0.0.0.0 表示所有IP。
LoginGraceTime 2m
#用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为秒
PermitRootLogin yes
#默认 ubuntu不允许root远程ssh登录
StrictModes yes
#检查.ssh/文件的所有者,权限等
MaxAuthTries
#用来设置最大失败尝试登陆次数为6
MaxSessions 10
#同一个连接最大会话
PubkeyAuthentication yes
#基于key验证
PermitEmptyPasswords no
#密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。
PasswordAuthentication yes
#基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10
#单位:秒
ClientAliveCountMax 3
#默认3
UseDNS yes
#提高速度可改为no 内网改为no 禁用反向解析
GSSAPIAuthentication yes #提高速度可改为no
MaxStartups #未认证连接最大值,默认值10
Banner /path/file
#以下可以限制可登录用户的办法:白名单 黑名单
AllowUsers user1 user2 user3@ip(限制主机)
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2
1.3.2 实际操作
修改默认端口

#修改默认端口
[root@localhost ssh]#vim /etc/ssh/sshd_config
#17 行修改自己默认的端口
17 Port 8848
禁止root用户登录

[root@localhost ssh]#vim /etc/ssh/sshd_config
#开启38 行 并改为 no,默认注释并写的yes
38 PermitRootLogin no
#注意虽然阻止了root 但是普通用户可以使用su
[root@localhost1 ~]#ssh zhangsan@192.168.177.100 -p 8848
zhangsan@192.168.177.100's password:
Last login: Fri Aug 27 16:50:35 2021
[zhangsan@localhost2 ~]$
[zhangsan@localhost2 ~]$ su root
密码:
[root@localhost2 zhangsan]#
修改 pam认证模块
[root@localhost ssh]#vim /etc/pam.d/su
#开启第6行,默认注释
6 auth required pam_wheel.so use_uid
白名单黑名单列表

[root@localhost ssh]#vim /etc/ssh/sshd_config
#手动添加
AllowUsers zhangsan@192.168.177.200 lisi
#允许所有有的主机访问我的lisi用户
#只允许 zhangsan 从192.168.177.200上访问
DenyUsers liwu
输错密码限制(验证此处)

[root@localhost ssh]#vim /etc/ssh/sshd_config
#取消注释 默认注释了
40 MaxAuthTries 2
[root@localhost ~]#ssh zhangsan@192.168.177.100 -p 8848
#默认次数3
zhangsan@192.168.177.100's password:
Permission denied, please try again.
zhangsan@192.168.177.100's password:
Received disconnect from 192.168.177.100 port 8848:2: Too many authentication failures
Authentication failed.
[root@localhost ~]# ssh -o NumberOfPasswordPrompts=8 root@192.168.177.100
#设置尝试次数为8
root@192.168.177.100's password:
1.3.3 使用秘钥对及免交互验证登录

客户端发起ssh请求,服务器会把自己的公钥发送给用户
用户会根据服务器发来的公钥对密码进行加密
加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

首先在客户端生成一对密钥(ssh-keygen)
并将客户端的公钥ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括ip、用户名
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

[root@31yml .ssh]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
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:LLWeS+q61pZv8xkco6lxU0w+l/DRfiw2feIsVNyLgQM root@31yml
The key's randomart image is:
+---[RSA 2048]----+
| E |
| . .o . |
| . oo..+ .|
| o = o.=oo.|
| . S B =.*.=|
| o * * + =.|
| ...O o . o |
| . +*oo o . |
| .o=+oooo |
[root@31yml .ssh]#ssh-copy-id -i 192.168.177.200
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.177.200's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.177.200'"
and check to make sure that only the key(s) you wanted were added.
[root@31yml .ssh]#ssh 192.168.177.200
Last login: Mon Aug 7 21:56:41 2023 from 192.168.177.100
[root@yml-2 ~]#
SSH简述的更多相关文章
- Spring(八)SSH整合简述
一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1 ...
- SSH整合简述一
1.web.xml中配置 struts2过滤器 <filter> <filter-name>struts2</filter-name> <filter-cla ...
- SSH面试题收藏
Hibernate工作原理及为什么要用? 原理: 1. 读取并解析配置文件2. 读取并解析映射信息,创建SessionFactory3. 打开Sesssion4. 创建事务Transation5. 持 ...
- TCP/IP协议工作原理简述
TCP/IP协议工作原理简述 // */ // ]]> TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 ...
- 第9章 使用ssh服务管理远程主机。
章节简述: 学习使用nmtui命令配置网卡参数.手工将多块网卡做绑定.使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态. 完整演示sshd服务配置方法并详细讲述每个参数的作用,实战基于密 ...
- ssh面试题
ssh面试题 创建时间: 2015-8-12 22:37 来源: http://wenku.baidu.com/link?url=cw1B46f98hAde0kmr3J-wv7PpklZJRmf6I ...
- java面试题之ssh
1.写出你熟悉的开源框架以及各自的作用(项目中为什么使用SSH) 答:框架:hibernate,spring,struts1/struts2. Hibernate主要用于数据持久化:封装了JDBC操作 ...
- HDFS 架构简述
HDFS 架构简述 Hadoop分布式文件系统(HDFS)是一个分布式的文件系统,运行在廉价的硬件上.它与现有的分布式文件系统有很多相似之处.然而与其他的分布式文件系统的差异也是显着的.HDFS是高容 ...
- CMDB服务器管理系统【s5day88】:采集资产之Agent、SSH和Salt模式讲解
在对获取资产信息时,简述有四种方案. 1.Agent (基于shell命令实现) 原理图 Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库 优点: ...
- 002-自定义打开terminal,以及快捷键,其他程序类似,ssh管理-sshpass, Shuttle
一.利用Automator软件完成服务设定 1.使用Command+Space,打开Spotlight,搜索Automator 2.搜索到之后,双击打开,选择“服务[或快速操作]” 3.将“服务收到[ ...
随机推荐
- 2023年icpc大学生程序设计竞赛-nhr
icpc的省赛是在洛阳举办,第一次出省,还是两天,第一次离开郑州去别的城市比赛,心情更多的是激动,非常感谢老师给了这次机会,第一天20号,打完热身赛之后回寝室,和队友一起看了一下去年省赛的题,感觉还是 ...
- Spring的Bean标签配置(一)
Bean标签基本配置 由于配置对象交由Spring来创建 默认情况下它调用的的是类中的无参构造函数,如果没有无参构造函数则不会创建成功 id:唯一标识符号,反射是通过无参构造创建对象的. class: ...
- K8S | Deployment应用编排
目录 一.背景 二.Deployment组件 1.简介 2.语法说明 三.基础用例 1.创建操作 2.查看信息 3.更新操作 4.删除操作 四.进阶用例 1.回滚操作 2.伸缩操作 3.暂停与恢复 五 ...
- vulnhub Necromancer wp
flag1 nmap -sU -T4 192.168.220.130 有666端口 nc -nvu 192.168.220.130 666 监听回显消息 tcpdump host 192.168.22 ...
- node:windows script host 錯誤 console未定义
错误背景 在开发npm包时,碰到此项报错 解决方案 选中任意js文件,选择打开方式,指定到node中即可
- 用 Tensorflow.js 做了一个动漫分类的功能(一)
前言: 浏览某乎网站时发现了一个分享各种图片的博主,于是我顺手就保存了一些.但是一张一张的保存实在太麻烦了,于是我就想要某虫的手段来处理.这样保存的确是很快,但是他不识图片内容,最近又看了 mobil ...
- sqlmap指定参数注入
在参数前面加星号
- 新一代开源流数据湖平台Apache Paimon入门实操-上
@ 目录 概述 定义 核心功能 适用场景 架构原理 总体架构 统一存储 基本概念 文件布局 部署 环境准备 环境部署 实战 Catalog 文件系统 Hive Catalog 创建表 创建Catalo ...
- 一起来自定义loader吧
loader 在 webpack 编译中起到非常重要的作用,用于对模块的源代码进行转换,比如 css-loader 将 css 代码处理成字符串,style-loader 创建 style 标签将 c ...
- Visual Studio Code(vscode)下载慢 插件安装失败解决方案
目录 一.系统环境 二.前言 三.Visual Studio Code(vscode)简介 四.解决Visual Studio Code(vscode)下载慢的问题 4.1 问题描述 4.2 解决方案 ...