Linux下的SSH详解及Ubuntu教程

前言

SSH(Secure Shell)是一种用于计算机之间安全通信的协议,广泛应用于远程登录、系统管理和文件传输等场景。本文将详细介绍SSH在Linux系统(特别是Ubuntu)下的使用,包括安装、配置、密钥管理和常见应用,希望能帮助读者全面掌握SSH的使用。

1. 什么是SSH

SSH是一种网络协议,用于在不安全的网络上安全地执行系统管理和文件传输等操作。通过加密所有数据,SSH确保了通信的机密性和完整性,防止中间人攻击和其他安全威胁。

2. SSH的工作原理

SSH主要由以下几个部分组成:

  • 客户端:发起连接的一方,通常是用户的计算机。
  • 服务器:接收连接的一方,通常是远程主机。
  • 加密技术:SSH使用对称加密、非对称加密和哈希函数来保护数据传输。

在SSH连接过程中,客户端和服务器之间会进行以下步骤:

  1. 握手阶段:客户端和服务器交换加密算法,生成会话密钥。
  2. 用户认证:用户通过密码或密钥对进行认证。
  3. 会话建立:成功认证后,建立安全的会话通道。
3. 安装与配置SSH
安装SSH

在Ubuntu上,可以使用以下命令安装SSH服务器:

sudo apt update sudo apt install openssh-server

安装完成后,可以使用以下命令检查SSH服务的状态:

sudo systemctl status ssh
配置SSH

SSH的配置文件位于/etc/ssh/sshd_config。可以通过编辑该文件来配置SSH服务器。例如,修改默认端口号和禁用密码认证:

# 修改端口号 Port 2222 
# 禁用密码认证 PasswordAuthentication no 
# 仅允许密钥认证 PubkeyAuthentication yes

编辑完成后,重新启动SSH服务以使更改生效:

sudo systemctl restart ssh
详细配置选项
  • PermitRootLogin:控制是否允许root用户通过SSH登录。出于安全考虑,通常设置为no

    PermitRootLogin no
  • MaxAuthTries:限制用户认证失败的最大次数。

    MaxAuthTries 3
  • AllowUsersDenyUsers:指定允许或拒绝通过SSH登录的用户列表。

    AllowUsers user1 user2 
    DenyUsers user3
4. 使用SSH
连接到远程服务器

使用以下命令连接到远程服务器:

ssh username@hostname

其中username是远程服务器上的用户名,hostname是服务器的主机名或IP地址。

使用SSH密钥认证

SSH密钥认证比密码认证更安全。以下是设置密钥认证的方法:

  1. 生成密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

按提示生成密钥对,并将公钥复制到远程服务器:

ssh-copy-id username@hostname
  1. 禁用密码认证:编辑/etc/ssh/sshd_config文件,将PasswordAuthentication设置为no,并重启SSH服务。
PasswordAuthentication no
SSH隧道

SSH隧道用于将本地端口转发到远程服务器,或将远程端口转发到本地。例如,将本地端口8080转发到远程服务器的8080端口:

ssh -L 8080:localhost:8080 username@hostname

反向端口转发:

ssh -R 9090:localhost:80 username@hostname
文件传输

使用scp命令进行文件传输:

# 从本地复制到远程 
scp localfile.txt username@hostname:/remote/directory 
# 从远程复制到本地 
scp username@hostname:/remote/file.txt /local/directory

使用rsync命令同步文件和目录:

rsync -avz /local/directory username@hostname:/remote/directory
5. 高级应用
SSH代理转发

SSH代理转发允许你在多台服务器之间跳转时,使用本地SSH代理进行认证:

ssh -A username@hostname
SSH多重跳板

通过SSH多重跳板,可以在多台服务器之间进行跳转,例如:

ssh -J jump_host target_host

其中,jump_host是跳板服务器,target_host是目标服务器。

使用SSH配置管理工具

可以使用Ansible等配置管理工具通过SSH进行远程管理。例如,使用Ansible执行远程命令:

--- 
- name: Test Playbook 
    hosts: all 
    tasks: 
        - name: Echo a message 
        command: echo "Hello, World!"

运行Ansible playbook:

ansible-playbook -i inventory test_playbook.yml
6. 安全强化
更改默认端口

通过更改默认的SSH端口,可以减少暴力攻击的可能性:

Port 2222
使用Fail2Ban

安装并配置Fail2Ban以防止暴力攻击:

sudo apt install fail2ban 
# 配置Fail2Ban 
sudo vim /etc/fail2ban/jail.local 
# 添加以下内容 
[sshd] 
enabled = true 
port = 2222 
filter = sshd 
logpath = /var/log/auth.log 
maxretry = 3
使用防火墙

配置防火墙仅允许特定IP地址通过SSH连接:

sudo ufw allow from 192.168.1.0/24 to any port 2222
7. SSH教程

以下是一些推荐的SSH教程,帮助你更好地理解和应用SSH:

  • Linux SSH教程
  • SSH密钥认证教程
  • 使用Ansible进行SSH管理

总结

SSH是一个强大且灵活的工具,可以用于远程管理、文件传输和安全通信。通过本文的介绍,读者应能够理解SSH的基本原理,掌握SSH的安装和配置方法,并能在实际场景中灵活应用SSH。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/754957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 高级数据结构业务实践

0、前言 本文所有代码可见 > 【gitee code demo】 本文会涉及 hyperloglog 、GEO、bitmap、布隆过滤器的介绍和业务实践 1、HyperLogLog 1.1、功能 基数统计(去重) 1.2、redis api 命令作用案例PFADD key element [element ...]添加元素到keyPF…

PortSip测试

安装PBX 下载 免费下载 PortSIP PBX 安装PBX,安装后,运行 ,默认用户是admin 密码是admin,然后配置IP 为192.168.0.189 设置域名为192.168.0.189 配置分机 添加分机,添加了10001、10002、9999 三个分机&#xff0c…

深度学习实验第T2周:彩色图片分类

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 目标 二、我的环境&#…

【Linux进程通信】进程间通信介绍、匿名管道原理分析

目录 进程通信是什么? 进程通信的目的 进程通信的本质 匿名管道:基于文件级别的通信方式 站在文件描述符角度-深度理解管道原理 进程通信是什么? 进程通信就是两个或多个进程之间进行数据层面的交互。 进程通信的目的 1.数据传输&#x…

已解决java.security.acl.LastOwnerException:无法移除最后一个所有者的正确解决方法,亲测有效!!!

已解决java.security.acl.LastOwnerException:无法移除最后一个所有者的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查当前所有者数量 2. 添加新的所有者 3. 维…

mac Canon打印机连接教程

官网下载安装驱动: 选择打印机类型和mac系统型号下载即可 Mac PS 打印机驱动程序 双击安装 系统偏好设置 点击“”添加: OK可打印玩耍!! 备注: 若需扫描,下载扫描程序: 备注:…

设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性

# 适用于Windows系统 # 时间 : 2024-06-28 # 作者 : 三巧(https://blog.csdn.net/qq_39124701) # 文件名 : 设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性.ps1 # 使用方法: 打开记事本,将所有代码复制到记事本中,保存文件时候修改文件后…

Hugging Face Accelerate 两个后端的故事:FSDP 与 DeepSpeed

社区中有两个流行的零冗余优化器 (Zero Redundancy Optimizer,ZeRO)算法实现,一个来自DeepSpeed,另一个来自PyTorch。Hugging FaceAccelerate对这两者都进行了集成并通过接口暴露出来,以供最终用户在训练/微调模型时自主选择其中之…

zabbix-server的搭建

zabbix-server的搭建 部署 zabbix 服务端(192.168.99.180) rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d sed -i s#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix# zabbix.r…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…

Arduino - LED 矩阵

Arduino - LED 矩阵 Arduino - LED Matrix LED matrix display, also known as LED display, or dot matrix display, are wide-used. In this tutorial, we are going to learn: LED矩阵显示器,也称为LED显示器,或点阵显示器,应用广泛。在…

“Hello, World!“ 历史由来

布莱恩W.克尼汉(Brian W. Kernighan)—— Unix 和 C 语言背后的巨人 布莱恩W.克尼汉在 1942 年出生在加拿大多伦多,他在普林斯顿大学取得了电气工程的博士学位,2000 年之后取得普林斯顿大学计算机科学的教授教职。 1973 年&#…

C++ | Leetcode C++题解之第203题移除链表元素

题目: 题解: class Solution { public:ListNode* removeElements(ListNode* head, int val) {struct ListNode* dummyHead new ListNode(0, head);struct ListNode* temp dummyHead;while (temp->next ! NULL) {if (temp->next->val val) {…

小柴冲刺软考中级嵌入式系统设计师系列一、计算机系统基础知识(1)嵌入式计算机系统概述

flechazohttps://www.zhihu.com/people/jiu_sheng 小柴冲刺嵌入式系统设计师系列总目录https://blog.csdn.net/qianshang52013/article/details/139975720?spm1001.2014.3001.5501 根据IEEE(国际电气电子工程师协会)的定义,嵌入式系统是&q…

Linux高并发服务器开发(六)线程

文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性(了解)8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…

哪吒汽车,正在等待“太乙真人”的拯救

文丨刘俊宏 在360创始人、哪吒汽车股东周鸿祎近日连续且着急的“督战”中,哪吒汽车(下简称哪吒)终究还是顶不住了。 6月26日,哪吒通过母公司合众新能源在港交所提交了IPO文件,急迫地希望成为第五家登陆港股的造车新势力…

uniapp中实现瀑布流 短视频页面展示

直接上干货 第一部分为结构 <swiper class"list" :currentindex change"swiperchange" scrolltolower"onReachBottom"><swiper-item style"overflow: scroll;" v-for"(item,index) in 2" :key"index"&g…

DataV大屏组件库

DataV官方文档 DataV组件库基于Vue &#xff08;React版 (opens new window)&#xff09; &#xff0c;主要用于构建大屏&#xff08;全屏&#xff09;数据展示页面即数据可视化&#xff0c;具有多种类型组件可供使用&#xff1a; 源码下载

Golang | Leetcode Golang题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; func countPrimes(n int) int {primes : []int{}isPrime : make([]bool, n)for i : range isPrime {isPrime[i] true}for i : 2; i < n; i {if isPrime[i] {primes append(primes, i)}for _, p : range primes {if i*p > n {break}…

智能交通(1)——杭州交通数据集

赛题简介 在本地赛题中&#xff0c;参赛团队需要在平台提供的仿真交通场景下&#xff0c;通过算法模型驱动交通信号灯&#xff0c;以在各种交通状况&#xff08;高峰期、雨天等&#xff09;下都能最大程度地服务车辆&#xff0c;使其在模拟环境中获得综合最大得分。 数据集 …