当前位置: 首页 > news >正文

Ubuntu系统间SSH控制详细指南

Ubuntu系统间SSH控制详细指南

一、SSH基础概念

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地运行网络服务。它最常见的用途是远程登录系统,以及在系统之间安全地传输文件。

二、不同Ubuntu版本间的SSH兼容性

Ubuntu的不同版本可能使用不同版本的OpenSSH软件包,但基本兼容性良好:

  • Ubuntu 16.04 LTS及更早版本:OpenSSH 7.x
  • Ubuntu 18.04 LTS:OpenSSH 7.6
  • Ubuntu 20.04 LTS:OpenSSH 8.2
  • Ubuntu 22.04 LTS:OpenSSH 8.9
  • Ubuntu 24.04 LTS:OpenSSH 9.x

新版本默认支持旧版本的协议,但可能需要调整配置以实现最佳兼容性。

三、安装SSH服务

1. 检查SSH是否已安装

ssh -V

2. 安装OpenSSH服务器

对于需要被远程控制的机器(服务器端):

sudo apt update
sudo apt install openssh-server

对于只需要连接其他机器的客户端:

sudo apt update
sudo apt install openssh-client

3. 检查SSH服务状态

sudo systemctl status ssh

如果服务未运行,启动它:

sudo systemctl start ssh
sudo systemctl enable ssh  # 设置开机自启

四、基本SSH配置

1. 主配置文件位置

/etc/ssh/sshd_config

2. 常用配置选项

编辑配置文件前建议备份:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config

常见配置项:

Port 22                   # 默认端口,可修改为其他端口增强安全性
PermitRootLogin no        # 禁止root直接登录
PasswordAuthentication yes # 是否允许密码认证
PubkeyAuthentication yes  # 是否允许公钥认证
AllowUsers username       # 只允许特定用户登录

修改后重启SSH服务:

sudo systemctl restart ssh

五、防火墙设置

如果系统启用了UFW防火墙,需要允许SSH连接:

sudo ufw allow ssh
# 或者如果修改了默认端口
sudo ufw allow 2222/tcp  # 假设你使用2222端口

检查防火墙状态:

sudo ufw status

六、SSH基本使用

1. 连接到远程主机

ssh username@remote_host_ip

如果修改了SSH端口:

ssh -p 2222 username@remote_host_ip

2. 退出SSH会话

exit
或
Ctrl+D

七、SSH密钥认证(推荐)

比密码认证更安全,配置后无需每次输入密码。

1. 生成密钥对(在客户端)

ssh-keygen -t rsa -b 4096
# 或使用更安全的ed25519算法
ssh-keygen -t ed25519

按提示操作,通常直接回车使用默认设置。

2. 将公钥复制到服务器

ssh-copy-id username@remote_host_ip

如果修改了端口:

ssh-copy-id -p 2222 username@remote_host_ip

3. 禁用密码认证(可选,增强安全性)

编辑服务器上的/etc/ssh/sshd_config

PasswordAuthentication no

然后重启SSH服务:

sudo systemctl restart ssh

八、不同Ubuntu版本间的兼容性处理

1. 旧版本连接新版本服务器

如果遇到兼容性问题,可以在客户端指定协议版本:

ssh -o "HostKeyAlgorithms=ssh-rsa" username@host

2. 新版本连接旧版本服务器

可能需要启用不安全的算法(仅在安全网络中使用):

ssh -o "HostKeyAlgorithms=ssh-rsa" -o "PubkeyAcceptedKeyTypes=ssh-rsa" username@host

3. 永久性兼容配置

在客户端~/.ssh/config中添加:

Host old_serverHostName host_ipUser usernameHostKeyAlgorithms ssh-rsaPubkeyAcceptedKeyTypes ssh-rsa

九、高级功能

1. 端口转发

本地端口转发(将远程端口映射到本地):

ssh -L local_port:remote_host:remote_port username@ssh_server

远程端口转发(将本地端口映射到远程):

ssh -R remote_port:local_host:local_port username@ssh_server

2. SCP文件传输

从本地复制到远程:

scp /path/to/local/file username@remote_host:/path/to/remote/directory

从远程复制到本地:

scp username@remote_host:/path/to/remote/file /path/to/local/directory

3. SFTP文件传输

启动SFTP会话:

sftp username@remote_host

常用SFTP命令:

put local_file       # 上传文件
get remote_file      # 下载文件
ls                   # 列出远程目录
lls                  # 列出本地目录

十、故障排除

1. 连接被拒绝

  • 检查SSH服务是否运行:sudo systemctl status ssh
  • 检查防火墙设置
  • 检查网络连接

2. 认证失败

  • 检查用户名和密码
  • 检查密钥权限(~/.ssh目录应为700,私钥应为600)
  • 检查服务器是否允许该用户登录

3. 主机密钥变更警告

如果收到"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"错误,可以删除~/.ssh/known_hosts中对应的条目。

十一、安全建议

  1. 禁用root直接登录
  2. 使用密钥认证而非密码
  3. 修改默认SSH端口
  4. 定期更新系统和OpenSSH软件包
  5. 使用fail2ban防止暴力破解

安装fail2ban:

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

通过以上步骤,你应该能够在不同版本的Ubuntu系统之间建立安全的SSH连接并进行远程控制。根据你的具体环境和安全需求,可以调整相应的配置参数。

http://www.dtcms.com/a/311909.html

相关文章:

  • 由浅入深使用LangGraph创建一个Agent工作流
  • 零拷贝技术:高效数据传输的核心原理与应用
  • 用 JavaSwing 开发经典横版射击游戏:从 0 到 1 实现简易 Contra-like 游戏
  • 20250801-2-Kubernetes 存储-节点本地数据卷_笔记
  • IMAP电子邮件归档系统Mail-Archiver
  • UE5 Insight ProfileCPU
  • 自动驾驶嵌入式软件工程师面试题【持续更新】
  • 回归预测 | Matlab实现CNN-LSTM-self-Attention多变量回归预测
  • Java中的字符串 - String 类
  • 编程与数学 03-002 计算机网络 19_网络新技术研究
  • Java试题-选择题(6)
  • 苏州银行招苏新基金研究部研究员
  • python匿名函数lambda
  • Windows Server软件限制策略(SRP)配置
  • linux进度条程序
  • Educational Codeforces Round 181 (Rated for Div. 2) A-C
  • Mujoco(MuJoCo,全称Multi - Joint dynamics with Contact)一种高性能的物理引擎
  • LLM微调笔记
  • 泛型(java!java!java!)
  • 大模型大厂面试题及解析
  • 【MATLAB】(四)函数运算
  • “AI+固态”从蓝海愿景变为刚性需求,消费电池老将转身狂奔
  • MySQL中索引失效的常见场景
  • 人工智能之数学基础:离散型随机事件概率(古典概型)
  • 基于 LightGBM 的二手车价格预测
  • TCL --- 列表_part2
  • AAAI赶稿后的心得
  • Google Play下架报告 | 2025年Q2下架16万款App,同比下降86%
  • 自定义picker-view组件
  • IO流中的字节流