0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SSH远程登录与控制教程

马哥Linux运维 来源:CSDN技术社区 2025-04-09 13:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

SSH远程登录与控制

一 什么是ssh服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

SSH客户端<--------------网络---------------->SSH服务端

1 协议类型

• SSH(Secure Shell):SSH是一种加密网络协议,用于通过安全通道在不安全网络上进行远程访问和管理。它提供了加密的通信会话,包括远程登录和执行命令,以及传输文件等功能

Telnet:虽然不安全,但仍然被用于远程登录到服务器或设备,通常用于简单的文本交互

• RDP(Remote Desktop Protocol):主要用于Windows系统,允许用户通过图形界面远程访问另一台计算机。

• VNC(Virtual Network Computing):允许用户远程控制另一台计算机的图形界面。它是跨平台的远程桌面协议。

• X11:用于在UNIX和Linux系统上进行图形界面的远程访问。

• ICA(Independent Computing Architecture):由Citrix Systems开发,用于提供应用程序和桌面虚拟化服务

2 ssh协议优点

数据传输是加密的,可以防止信息泄露

数据传输是压缩的,可以提高传输速度

加密通信:SSH协议通过加密技术,确保通信过程中的数据传输是安全的,防止数据被窃听或篡改

• **远程登录:**用户可以使用SSH协议远程登录到其他计算机或服务器,以便进行命令行操作、文件管理等任务

加密身份验证:SSH协议支持使用公钥和私钥对进行身份验证,这种方式比传统的基于密码的身份验证更加安全

端口转发:SSH协议支持端口转发,可以通过安全的通道在两个计算机之间建立安全的连接

远程执行命令:SSH允许用户在远程主机上执行命令,这对于自动化脚本和远程管理非常有用

文件传输:SSH协议还支持安全的文件传输,可以在客户端和服务器之间进行安全的文件传输和管理

作用

sshd 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

3 SSH的 软件

SSH 客户端: xshell putty secureCRT MobaXterm finalshell

SSH 服务端:openSSH (Centos 7 默认安装)

4 有关系的程序

• OpenSSH:OpenSSH 是 SSH 协议的免费开源实现,包括服务器端和客户端程序。它支持加密和身份验证功能,被广泛用于Linux和类Unix系统上

• PuTTY:PuTTY 是一个流行的免费的SSH和Telnet客户端程序,可在Windows平台上使用。它提供了SSH连接所需的工具和功能

• WinSCP:WinSCP 是一个免费的SFTP、SCP和FTP客户端程序,用于在Windows平台上与远程计算机进行安全文件传输。它支持SSH协议,提供了用户友好的界面

• SecureCRT:SecureCRT 是一个商业化的SSH客户端程序,提供了强大的功能和定制选项,适用于Windows、Mac和Linux操作系统

5 公钥传输原理

①客户端发起连接请求

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

③客户端生成密钥对

④客户端用自己的公钥或会话ID,计算出一个值Res,并用服务端的公钥加密

⑤客户端发送加密后的值到服务端,服务端用密钥解密,得到Res

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

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

6 加密通讯原理

42dff18e-1394-11f0-9310-92fbcf53809c.png

详细阐释:

首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

7 ssh远程登录文件

每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里。

8 如何确定此台机器就是我要连的机器?

1. ssh [选项]mcb@192.168.11.9 #指定登录用户、目标主机地址作为参数

2. ssh -p 20mcb@192.168.11.9 #-p为指定端口

二 ssh命令 远程连接

①直接连接:先输入ssh IP

4314a9a6-1394-11f0-9310-92fbcf53809c.png

第一次连接服务端机器会询问是否要验证公钥,同意就会自动获取服务端公钥

43252542-1394-11f0-9310-92fbcf53809c.png

验证是否连接正确服务机,可查看服务端的公钥

43328d2c-1394-11f0-9310-92fbcf53809c.png

②连接指定用户

① ssh 用户名@IP地址

②ssh -l 用户名 IP地址

4342a90a-1394-11f0-9310-92fbcf53809c.png

③指定端口号

在 /etc/ssh/sshd_config文件修改端口号

sshd服务的默认端口号是 22,如果不是此端口,需要 -p 来指定端口

[root@localhost ~]#vim /etc/ssh/sshd_config

4351702a-1394-11f0-9310-92fbcf53809c.png

[root@localhost ~]#systemctl restart sshd

在另一台虚拟机验证,使用客户机就需要指定端口号

43605d60-1394-11f0-9310-92fbcf53809c.png

跳板登录

提供了一种安全的方式管理和连接位于内部网络中的主机,同时限制了对内部网络的直接访问

#在目标服务端主机上模拟防火墙拒绝客户端连接,客户端使用跳板连接到目标主机上
[root@localhost .ssh]#iptables -A INPUT -s 192.168.11.5-j REJECT
[root@localhost ~]#ssh -t 192.168.11.9 ssh 192.168.11.5

三 远程登录直接执行操作命令

#ssh 192.168.11.9 ifconfig

**白名单:**默认拒绝所有,只有白名单上允许的人才可以访问

**黑名单:**默认允许所有,只有黑名单上的用户让你不允许访问

注意 实验关闭防火墙 防护 黑白不能同时启用

修改服务端配置文件

root@localhost ~]#vim /etc/ssh/sshd_config

437231a2-1394-11f0-9310-92fbcf53809c.png

437f3dde-1394-11f0-9310-92fbcf53809c.png

① 白名单,只能登录本机的mcb@用户

438cb18a-1394-11f0-9310-92fbcf53809c.png

43998234-1394-11f0-9310-92fbcf53809c.png

别的用户无法登录

43a8c082-1394-11f0-9310-92fbcf53809c.png

③禁止用户登录 ,此实验要反复去做

借鉴他人

[root@localhost ssh]#vim /etc/ssh/sshd_config
#开启38 行 并改为 no,默认注释并写的yes
38PermitRootLogin no
#注意虽然阻止了root 但是普通用户可以使用su
[root@localhost1 ~]#ssh zhangsan@192.168.91.100 -p 9527
zhangsan@192.168.91.100's password:
Last login: Fri Aug2716:50:352021
[zhangsan@localhost2 ~]$
[zhangsan@localhost2 ~]$ su root
密码:
[root@localhost2 zhangsan]#


修改 pam认证模块
[root@localhost ssh]#vim /etc/pam.d/su
#开启第6行,默认注释
6auth      required    pam_wheel.so use_uid

vim /etc/ssh/sshd_config

38 #PermitRootLogin yes 把yes该为no
Xshell就登陆不上

修改pam认证模块,只允许wheel组用户可以使用 su

[root@localhost ~]# vim /etc/pam.d/su

6 #auth required pam_wheel.so use_uid
默认是注释掉,要让6行开启

操作如下:

[root@localhost ~]# vim /etc/pam.d/su

43b5a658-1394-11f0-9310-92fbcf53809c.png

太遗憾了,过程忘了

四 SSH服务的最佳实践

①建议使用非默认端口22

vim /etc/ssh/sshd_config
#找到以下两个配置项:
port 123    #设置特定的ssh服务端口号

②禁止使用 protocol version 1

因为SSH协议版本一存在多个已知的安全漏洞,其使用的加密算法和密钥交换机制相对较弱,易受到中间人攻击等威胁

SSH 协议版本二已经成为现代标准,并且得到广泛支持,绝大多数 SSH 客户端和服务器都默认使用协议版本二,而且很多安全性工具也不再支持协议版本一

③限制可登录用户(白名单)

④设定空闲会话超时时长

vim /etc/ssh/sshd_config      #找到以下两个配置项:

ClientAliveInterval 0

ClientAliveCountMax 3

ClientAliveInterval:表示服务器向客户端发送空闲会话确认消息的时间间隔,单位为秒。默认值为0,表示不发送确认消息。将其设置为一个正整数,表示每隔多长时间向客户端发送一次确认消息。

ClientAliveCountMax:表示服务器向客户端发送确认消息后,客户端没有响应的最大次数。默认值为3,表示如果服务器连续发送3次确认消息后,客户端仍未响应,则认为客户端已经断开连接。将其设置为一个正整数,表示服务器最多发送多少次确认消息后,认为客户端已经断开连接

⑤利用防火墙设置SSH访问策略

#利用防火墙禁止特定IP地址:172.16.12.10访问
iptables -A INPUT -s 172.16.12.10 -j REJECT

⑥仅监听特定的IP地址、公网、内网

vim /etc/ssh/sshd_config      #找到以下三个配置项:

ClientAliveInterval 300

ClientAliveCountMax 2

ListenAddress 192.168.11.10

ClientAliveInterval:表示SSH服务器将向客户端发送空闲会话检查的时间间隔(以秒为单位),默认值为0,表示禁用此功能

ClientAliveCountMax:表示SSH服务器将向客户端发送空闲会话检查的最大次数,如果达到此次数后仍未收到客户端的响应,则会话将被终止,默认值为3

ListenAddress:监听特定的IP地址的SSH连接

⑦基于口令认证时,使用强密码策略

1. 比如:tr -cd [a-zA-Z0-9] < /dev/random  |  head -c 12 | xargs

2. #设定12位的随机密码

⑧使用基于密钥的认知

⑨禁止使用空密码

vim /etc/ssh/sshd_config

#找到以下一个配置项:

PermitEmptyPasswords no #禁止使用空密码

⑩禁止root用户直接登录

11 限制ssh的访问频率和并发在线数

vim /etc/ssh/sshd_config      #找到以下一个配置项:

MaxStartups 10          #最多允许10个并发连接,如果超过这个数量,会拒绝新的连接

使用PAM模块:通过Pluggable Authentication Modules (PAM) 可以实现更复杂的控制,
例如限制用户的并发登录数

使用防火墙:你也可以使用防火墙软件如iptables来限制从特定IP地址发起的并发SSH连接数

12 经常分析日志分离

独立sshd服务日志文件:默认sshd服务日志在/var/log/secure下,可通过rsyslog程序将sshd服务日志文件独立出来放到特定的文件夹中,方便查看和管理。
(具体操作请查看《Linux文件系统与日志分析》博客)

使用日志分析工具:可以使用工具如grep、awk、sed等来分析SSH日志文件。这些工具可以帮助搜索特定的关键字、过滤信息、提取有用的数据等

设置日志轮转:为了避免日志文件过大,可以配置日志轮转。通过日志轮转,旧的日志文件会被重命名并压缩,同时创建新的日志文件。可以使用logrotate工具来实现日志轮转,并在其配置文件中指定SSH日志文件的处理方式(具体操作请查看《Linux文件系统与日志分析》博客)

五 openSSH服务器配置文件

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

执行“systemctl start sshd”命令即可启动sshd服务,默认端口使用的22端口

服务名称:sshd

服务端主程序:/usr/sbin/sshd

服务端配置文件:/etc/ssh/sshd_config

客户端配置文件:/etc/ssh/ssh_config

1 ssh配置文件信息

在linux中实现ssh,是通过opsnSSH的sshd服务提供的

43c7084e-1394-11f0-9310-92fbcf53809c.png

2 存放ssh服务端的配置文件 /etc/ssh/sshd_config

[root@localhost ~]#vim /etc/ssh/sshd_config

43d69246-1394-11f0-9310-92fbcf53809c.png

六 密钥对免交互 验证登录

有密码又无需输入密码

1 创建密钥,生成rsa算法密钥

43e730ec-1394-11f0-9310-92fbcf53809c.png

2 传送到远程主机

43facf26-1394-11f0-9310-92fbcf53809c.png

3 登录验证

44084bec-1394-11f0-9310-92fbcf53809c.png

七 免交互登录

客户端先输入 ssh-agent bash 将这个命令交给 bash 去管理

再输入 ssh-add 是将用户的私钥添加到运行中的 ssh-agent 中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用

[root@localhost .ssh]# ssh-agent bash            #把sh-agent交给进程管理

[root@localhost .ssh]# ssh-add                 #把密码交给sh-agent 

Enter passphrase for /root/.ssh/id_rsa:           #输入密钥文件密码

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

[root@localhost .ssh]# ssh 192.168.11.6     #无需密码即可登录,重启后失效

Last login: Sun Jan 21 1403 2024 from 192.168.11.9

注:机器重启就会失效

链接:https://blog.csdn.net/MCB134/article/details/135577909

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10102

    浏览量

    90923
  • WINDOWS
    +关注

    关注

    4

    文章

    3697

    浏览量

    93258
  • 客户端
    +关注

    关注

    1

    文章

    305

    浏览量

    17419
  • SSH
    SSH
    +关注

    关注

    0

    文章

    198

    浏览量

    17582

原文标题:SSH远程登录保姆级教程:从零到精通,告别连接失败!

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何远程登录云服务器?登录失败是什么原因?

    我用Linux云服务器,遇到了有关远程登录的一些问题,于是搜索了一些资料,整理了一篇文档,作为记录。如果你也遇到过 相似的问题,欢迎一起探讨! 一、Linux云服务器的远程登录
    发表于 02-01 15:32

    如何实现远程登录ssh并配置为开机启动

    今天教论坛的发烧友们如何实现远程登录ssh,并配置为开机启动!千万要注意的一点,ssh和ssl不能混淆安装并运行ssh1,安装sshapt-
    发表于 09-12 10:32

    如何使用SSH远程命令登录香橙派开发板

    地址为了远程登录香橙派开发板,首先需要获取开发板的 IP 地址。我们可以通过串口来查看。3.使用 ssh 远程登录香橙派开发板3.1使用
    发表于 05-22 17:16

    SSH远程登录香橙派Zero2开发板的操作方法

    `1、Ubuntu下SSH远程登录开发板<span]3) 成功登录系统后的显示如下图所示可以在开发板上输入下面的命令再尝试是否能连接2、Windows 下
    发表于 12-23 17:58

    路由器方案板香橙派R1 Plus如何使用SSH远程登录

    `不太了解OrangePi R1 Plus这款开发板的开发者,可以对比下NanoPi R2S,配置一样。作为路由器方案板, R1 Plus适配有OpenWRT, 系统默认都开启了 ssh 远程登录
    发表于 05-11 18:07

    如何在Ubuntu下实现SSH远程登录开发板的设计呢

    如何在Ubuntu下实现SSH远程登录开发板的设计呢?如何在Windows下实现SSH远程登录
    发表于 03-09 07:14

    如何使用ssh远程登录虚拟机?

    我pc上安装的虚拟机和pc可以互相ping通,但是使用ssh远程登录时,不用名输入root或forlinx,都不能远程登录,请问该怎么实现
    发表于 11-25 06:15

    linux系统如何登录远程linux服务器

    linux系统登录远程linux服务器:有多种不同的协议可供选择,也许SSH是“最好”的。SSH是secure shell的简写,意为“安全的shell”。作为rlogin、rcp、
    发表于 05-14 09:35 3784次阅读
    linux系统如何<b class='flag-5'>登录</b>到<b class='flag-5'>远程</b>linux服务器

    【米尔MYD-J1028X开发板试用体验】实现SSH远程登录,系统测评

    本文来源电子发烧友社区,作者:mameng, 帖子地址: https://bbs.elecfans.com/jishu_2308785_1_1.html   开发板 默认没有开启SSH远程登录
    的头像 发表于 10-25 11:24 1819次阅读
    【米尔MYD-J1028X开发板试用体验】实现<b class='flag-5'>SSH</b><b class='flag-5'>远程</b><b class='flag-5'>登录</b>,系统测评

    SSH命令详解

    ssh是一种安全的远程登录及传输协议。ssh可用于远程登录
    的头像 发表于 06-02 10:00 1.9w次阅读
    <b class='flag-5'>SSH</b>命令详解

    SSH/Telnet设备远程登录方式实际综合运用

    SSH和Telnet都是远程连接控制协议,在网络技术的应用中常被用于远程连接控制路由器和交换机,方便工程师
    发表于 06-11 09:12 2017次阅读
    <b class='flag-5'>SSH</b>/Telnet设备<b class='flag-5'>远程</b><b class='flag-5'>登录</b>方式实际综合运用

    如何配置交换机SSH远程登录

    如何配置交换机SSH远程登录,本期我们就来了解下ssh远程登陆的方式,以锐捷交换机为例。
    的头像 发表于 08-02 09:35 5662次阅读
    如何配置交换机<b class='flag-5'>SSH</b><b class='flag-5'>远程</b><b class='flag-5'>登录</b>?

    交换机如何配置SSH远程登录

    从事网络运维工作的小伙伴们都知道,在交换机正式上线时,必须完成配置SSH远程登录,这样做目的是为了日后,维护方便,不需要每次登录设备都要跑到机房,这样既不现实,又费事。
    的头像 发表于 10-10 14:33 3612次阅读
    交换机如何配置<b class='flag-5'>SSH</b><b class='flag-5'>远程</b><b class='flag-5'>登录</b>

    SSH远程操作的基本方式

    SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以
    的头像 发表于 11-11 11:15 1158次阅读
    <b class='flag-5'>SSH</b><b class='flag-5'>远程</b>操作的基本方式

    禁止使用root用户通过ssh远程登录Linux

    1、背景描述 出于安全考虑,需要禁止使用root用户通过ssh远程登录Linux 禁用root用户远程登录后,需要提供一个权限用户用于
    的头像 发表于 12-21 16:25 2529次阅读
    禁止使用root用户通过<b class='flag-5'>ssh</b><b class='flag-5'>远程</b><b class='flag-5'>登录</b>Linux