Linux远程访问及控制方式

 更新时间:2024年09月13日 16:34:30   作者:活老鬼  
SSH(Secure Shell)是一种协议,用于安全地通过不安全的网络进行远程登录和其他网络服务,OpenSSH是SSH协议的一种开源实现,它支持数据加密,能有效防止信息泄露,适用于多种操作系统,SSH配置包括服务端和客户端,可以通过密码或密钥对验证方式进行身份验证

一、SSH远程管理

1. SSH概述

SSH(Secure Shell)协议

  • SSH是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。
  • SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的口令。

OpenSSH

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

  • 服务名称:sshd
  • 默认端口号:22
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh_config

2.SSH的优点

  • SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议
  • 利用SSH协议可以有效防止远程管理过程中的信息泄露问题
  • SSH最初是Unix系统中的一个程序,后来又迅速扩展到其他操作平台
  • SSH在正确使用时可弥补网络中的漏洞
  • 数据传输的过程是加密的,具有安全稳定的特点
  • 数据传输的方式是压缩的,可以提高传输速度

3.配置OpenSSH客户端

  • shd_config配置文件的常用选项设置
vi /etc/ssh/sshd_config

......
Port 22    #监听端口为 22
ListenAddress 0.0.0.0    #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m    #登录验证时间为 2 分钟
PermitRootLogin no    #禁止 root 用户登录
MaxAuthTries 6    #最大重试次数为 6

PermitEmptyPasswords no    #禁止空密码用户登录
UseDNS no    #禁用 DNS 反向解析,以提高服务器的响应速度

AllowUsers zhangsan lisi wangwu@61.23.24.25
#只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为61.23.24.25的主机远程登录

DenyUsers zhangsan
#禁止某些用户登录,用法于AllowUsers类似(注意不要同时使用)

4.sshd服务支持的两种验证方式

密码验证

  • 对服务器中本地系统用户的登录名称、密码进行验证。
  • 简便,但可能会被暴力/破解

密钥对验证

  • 有球提供相匹配的密钥信息才能通过验证。
  • 通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。
  • 远程登录时,系统将使用公钥、私钥进行加密\解密关联验证。
  • 能够增强安全性,且可以免交互登录

5. 使用SSH客户端程序

5.1 ssh - 远程登录

ssh "选项" "用户名"@"ip\名称"

例: ssh -p 1022 zhangsan@20.0.0.13

# "-p"指定端口号

5.2 scp - 远程复制

  • 下行复制:
scp "用户名"@"ip/名称":"被复制的远程主机文件路径" "复制到的本机文件路径"

例:scp root@20.0.0.13:/etc/passwd /root/passwd10.txt
  • 上行复制:
scp "被复制的本机文件路径" "用户名"@"ip\名称":"复制到的远程主机文件路径"

例:scp /root/passwd root@20.0.0.13:/etc/passwd10.txt
  • "-r"选项:递归复制目录
  • "-P"选项:指定端口号

6.配置密钥对验证

1.在客户端使用ssh-keygen工具创建密钥对文件(可用的加密算法为RSA、ECDSA、DSA等)

ssh-kegen -t rsa

#"-t"选项:指定加密算法类型
[root@wzx ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    #指定私钥位置(回车默认)
Created directory '/root/.ssh'.
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:GqXMgBqBoMByselDeDiNraMgVv17fJrXb7FQ0NHGl5o root@wzx
The key's randomart image is:
+---[RSA 2048]----+
|B ..          .o+|
|=O.+.        . o=|
|O.O...  .     +..|
| O.  +.o     E . |
|*.o   =.S     .  |
|=. .   oo    . . |
|.     .. o .. . o|
|        . +. . o |
|         o.   o. |
+----[SHA256]-----+
  • 生成的私钥、公钥文件默认存放在宿主目录中的隐藏目录.ssh/下

2.将公钥文件上传至服务器

ssh-copy-id root@20.0.0.12

"-i"选项:指定密钥文件
[root@wzx ssh]# ssh-copy-id root@20.0.0.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '20.0.0.12 (20.0.0.12)' can't be established.
ECDSA key fingerprint is SHA256:1R40yTT7DYnXgxAb8W4TabvlPcU9038lLVjDrQqnpnA.
ECDSA key fingerprint is MD5:03:ae:25:33:8f:08:48:80:85:d4:3a:73:f2:49:83:a4.
Are you sure you want to continue connecting (yes/no)? yes
/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@20.0.0.12's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@20.0.0.12'"
and check to make sure that only the key(s) you wanted were added.

3.使用密钥对验证登录

ssh root@20.0.0.12

[root@wzx ssh]# ssh root@20.0.0.12
Last login: Mon Aug 19 23:47:41 2024 from 20.0.0.1

二、TCP Wrappers访问控制

1.TCP Wrappers 概述

  • TCP Wrapper 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。
  • 对应的两个策略文件为:/etc/hosts.allow 和 /etc/hosts.deny ,分别用来设置允许和拒绝的策略。

格式:

"服务程序列表":"客户端地址列表"

(1) 服务程序列表:

  • ALL:代表所有的服务
  • 单个服务程序:如"vsftpd"
  • 多个服务程序组成的列表:如"vsftpd.sshd"

(2) 客户端地址列表:

  • ALL:代表任何客户端地址
  • LOCAL:代表本机地址
  • 多个地址以逗号分隔
  • 允许使用通配符"*"、"?",
  • 网段地址,如 192.168.20. 或 192.168.20.0/255.255.255.0
  • 区域地址,如".benet.com"

2. TCP Wrappers 机制的基本原则

首先检查/etc/hosts.allow(白名单)文件,如果找到相匹配的策略,则允许访问;

否则继续检查/etc/hosts.deny(黑名单)文件,如果找到相匹配的策略,则拒绝访问;

如果检查上述两个文件都找不到相匹配的策略,则运行访问。

  • 允许所有,拒绝个别:

只需在/etc/hosts.deny文件中添加相应的拒绝策略

  • 允许个别,拒绝所有:

除了在/etc/hosts.allow中添加允许策略之外,还需要再/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。

三、对称密钥与非对称密钥

1.对称密钥(Symmetric Key)

对称密钥加密,又称为私钥加密或会话密钥加密算法,是一种加密和解密使用相同密钥或可以相互推算的密钥对的加密方式。

优点:

  • 加解密速度快,适合处理大量数据

缺点:

  • 密钥管理困难,泄露风险大

2.非对称密钥(Asymmetric Key)

非对称密钥加密,又称为公钥密钥加密,它需要使用一对密钥来分别完成加密和解密操作。这对密钥包括一个公钥和一个私钥,公钥可以公开发布,而私钥则由用户自己秘密保存。

优点:

  • 泄露风险低

缺点:

  • 加解密速度慢

四、在终端中使用私钥文件登录服务器

1.在服务端中生成密钥

[root@wzx ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:xfbf6ZBU+BSvX7kPn4Pyu//Ug5kvOiZI2m6Bndv77Qg root@wzx
The key's randomart image is:
+---[RSA 2048]----+
|               . |
|         .    . o|
|          +  . o.|
|         o .  +..|
|      o S   ...o.|
|     . =    ..=o=|
|      + =E   *++=|
|     . = o.+oo+=+|
|      o. .=+**==*|
+----[SHA256]-----+

2.将id_rsa私钥文件导出到客户端(可使用ftp工具等)

3.找到公钥文件并追加到authorized_keys文件内

[root@wzx ~]# cd .ssh
[root@wzx .ssh]# ls
id_rsa  id_rsa.pub
[root@wzx .ssh]# cat id_rsa.pub >> authorized_keys
[root@wzx .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub
[root@wzx .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6bCV0EHdsXSD83CG4iNl81D1vDLiuywSsbj+3ANQOK4qRWNPOHfOIBXGANZQsT+33CrJY4ZvFnvcIeWpS+/fYyFnTekHPzuOROzcZYfkBxm1SB7YM5pLnHr8YdyUCOaYUhLYBuBixm80l1QvVOPnNRkKgzcOsOQSpOihGXgAa2d7lbOnr8UOO/aJ/6FQ2xxcCEcP9sG3h/uvCi7BP430XQPmfVksRm/tR+8sPNJNzioXgIoh5Sc6Rqp2C1IC3Krx3um4FCyqJJZJ6I7uY74g+L/Nt7IT3qTr13zVVjEAktNV0zMvdxRTNnIzEWTrhwEDASzJs3ewDjv1FESGErHTH root@wzx

4.配置sshd_config文件

ot@wzx .ssh]# vim /etc/ssh/sshd_config 

......
PubkeyAuthentication yes    #启用公钥验证
......

[root@wzx .ssh]# systemctl restart sshd    #重启刷新配置

5.在终端中设置私钥登录

6.登录

成功登录且不用输入密码

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux环境openssl、openssh升级流程

    linux环境openssl、openssh升级流程

    该文章详细介绍了在Ubuntu 22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译环境、备份和安装、验证等,然后,升级OpenSSH的步骤包括下载最新版本、安装相关依赖、解压和编译安装、查看版本、备份替换文件、重启服务等
    2025-03-03
  • linux mysql8.0安装配置实践

    linux mysql8.0安装配置实践

    文章介绍了MySQL数据库的安装和配置过程,包括跳过密码登录、修改配置文件、重启服务以及密码加密设置等步骤
    2026-02-02
  • Linux清空catalina.out日志文件方式

    Linux清空catalina.out日志文件方式

    在Linux中清空catalina.out日志文件的方法有多种,包括使用echo或重定向、truncate命令、以及cat和/dev/null,在执行这些操作前,请确保你有写入权限,并考虑Tomcat服务的状态,以避免日志信息丢失
    2025-11-11
  • Linux使用zip压缩命令压缩文件实现方式(排除不需要的文件)

    Linux使用zip压缩命令压缩文件实现方式(排除不需要的文件)

    Linux中使用zip命令压缩文件的方法,包括-r参数指定压缩包名,-x参数排除特定文件,-j只保存文件内容不保存目录结构等选项
    2026-04-04
  • Linux环境下使用Claude Code的实战指南

    Linux环境下使用Claude Code的实战指南

    本文记录我在 Linux 环境下使用 Claude Code 的实践,涵盖 ClawGod 运行时补丁 的安装原理、cc-switch-cli 多供应商 API 管理,以及 Linux 虚拟机无限制模式 的开启方法,需要的朋友可以参考下
    2026-05-05
  • Linux系统中获取时间的方法总结

    Linux系统中获取时间的方法总结

    在Linux操作系统中,获取时间是一个基本且重要的功能,本文旨在全面总结Linux系统中获取时间的方法,包括命令行工具和编程接口,帮助读者深入理解Linux时间管理的机制,需要的朋友可以参考下
    2025-03-03
  • Linux调整系统最大文件打开数限制的实战指南

    Linux调整系统最大文件打开数限制的实战指南

    在现代高并发服务架构中,Linux系统的文件描述符(File Descriptor)管理能力直接决定了应用的稳定性和吞吐量,本文将带你深入理解Linux文件描述符机制,手把手教你如何正确调整系统最大文件打开数限制,并结合真实Java代码示例,让你的应用稳如泰山
    2026-04-04
  • Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法(总结篇)

    Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法(总结篇)

    这篇文章主要介绍了Linux系统安装NoSQL(MongoDB和Redis)步骤及问题解决办法的相关资料,本文分步骤给大家介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • CentOS下命令行实现普通用户和root用户切换的实例

    CentOS下命令行实现普通用户和root用户切换的实例

    今天小编就为大家分享一篇CentOS下命令行实现普通用户和root用户切换的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • linux保留端口避免被随机分配占用方式(ip_local_reserved_ports)

    linux保留端口避免被随机分配占用方式(ip_local_reserved_ports)

    文章分析Nginx服务器偶发端口冲突问题,指出因端口复用机制导致的连接数虚高现象,提出通过扩大端口范围、保留特定端口及分离Nginx与应用服务部署的解决方案,强调端口动态分配特性与实际资源消耗的差异
    2025-09-09

最新评论