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

【linux】(24)SSH

1. SSH 基本概念

SSH(Secure Shell)是一种用于安全远程登录和其他网络服务的加密协议。它提供了在不安全网络上安全传输数据的机制。

2. 安装和配置

安装 OpenSSH

在大多数 Linux 发行版上,可以通过包管理器安装 OpenSSH:

在 Debian/Ubuntu 系统上:

sudo apt update
sudo apt install openssh-server

在 RHEL/CentOS 系统上:

sudo yum install openssh-server

在 Fedora 系统上:

sudo dnf install openssh-server

启动并配置 SSH 服务

启动 SSH 服务:

sudo systemctl start sshd

设置开机启动:

sudo systemctl enable sshd

检查 SSH 服务状态:

sudo systemctl status sshd

配置 SSH

SSH 的配置文件通常位于 /etc/ssh/sshd_config。可以使用任何文本编辑器进行编辑:

sudo nano /etc/ssh/sshd_config

常见的配置选项包括:

  • Port: 设置 SSH 服务监听的端口,默认是 22。
  • PermitRootLogin: 是否允许 root 用户登录,建议设为 no
  • PasswordAuthentication: 是否允许密码验证,建议设为 no 并使用密钥验证。

编辑完配置文件后,重新启动 SSH 服务以应用更改:

sudo systemctl restart sshd

3. 基本操作

连接到远程主机

使用 SSH 客户端连接到远程主机:

ssh username@hostname

例如:

ssh user@192.168.1.100

使用密钥验证

生成 SSH 密钥对:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

生成的密钥对默认保存在 ~/.ssh/ 目录下,包括 id_rsa(私钥)和 id_rsa.pub(公钥)。

将公钥复制到远程主机:

ssh-copy-id username@hostname

传输文件

使用 scp 命令在本地和远程主机之间传输文件:

从本地传输到远程:

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

从远程传输到本地:

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

使用 rsync 进行同步传输:

rsync -avz /path/to/local/directory/ username@hostname:/path/to/remote/directory/

远程执行命令

在远程主机上执行命令而不进入交互式 shell:

ssh username@hostname 'command'

例如:

ssh user@192.168.1.100 'ls -l /var/www'

4. 高级使用技巧

端口转发

本地端口转发:

将远程主机的端口转发到本地端口:

ssh -L local_port:remote_host:remote_port username@hostname

例如,将远程主机的 3306 端口转发到本地的 3306 端口:

ssh -L 3306:localhost:3306 user@192.168.1.100

远程端口转发:

将本地主机的端口转发到远程端口:

ssh -R remote_port:local_host:local_port username@hostname

例如,将本地主机的 8080 端口转发到远程主机的 8080 端口:

ssh -R 8080:localhost:8080 user@192.168.1.100

SSH 配置文件

你可以在 ~/.ssh/config 文件中定义常用的 SSH 连接配置,以便简化连接命令:

Host myserver
HostName 192.168.1.100
User user
Port 22
IdentityFile ~/.ssh/id_rsa

这样,你可以通过以下命令连接到服务器:

ssh myserver

使用 ssh-agent 管理密钥

ssh-agent 是一个用于管理 SSH 私钥的守护进程。可以使用 ssh-add 命令将私钥添加到 ssh-agent 中,以便在多个会话中使用:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

5. 安全性建议

  • 禁用 root 登录:编辑 sshd_config 文件,将 PermitRootLogin 设为 no
  • 禁用密码验证:使用密钥验证并将 PasswordAuthentication 设为 no
  • 修改默认端口:将 Port 设置为非 22 的端口,如 2222。
  • 使用防火墙限制 SSH 访问:只允许特定 IP 地址访问 SSH 端口。
sudo ufw allow 2222/tcp
sudo ufw enable

http://www.kler.cn/a/419317.html

相关文章:

  • 长安汽车嵌入式面试题及参考答案
  • ARIMA-神经网络混合模型在时间序列预测中的应用
  • 数据结构入门(C语言复习)malloc开辟free释放
  • 企业网站面临的爬虫攻击及安全防护策略
  • FTP介绍与配置
  • C#使用ExcelDataReader读取Xlsx文件为DataTable对象
  • 电脑还原重置Windows系统不同操作模式
  • 数据结构:Map和Set(Java)
  • 32 从前序与中序遍历序列构造二叉树
  • 实现实时CPS安全的动态目标防御
  • 网络安全——浅谈HTTP协议
  • Redis2——协议与异步方式
  • unity如何让一个物体拥有按钮功能
  • STL算法之基本算法<stl_algobase.h>
  • 企业网站面临的爬虫攻击及安全防护策略
  • 基于群晖搭建个人图书架-TaleBook based on Docker
  • 基于Matlab的变压器仿真模型的建模方法(7):单相三绕组变压器的空载合闸和负载运行瞬态分析
  • 用Java爬虫“搜刮”工厂数据:一场数据的寻宝之旅
  • springboot/ssm研究生志愿填报辅助系统Java院校招生问卷调查系统web源码
  • C#里怎么样创建对象之后,就可以立即调用函数?
  • IT成长之路-ubuntu驱动篇
  • 博客摘录「 【UnityEditor编辑器扩展】遍历子节点,带中断实现」2024年11月28日
  • Unity类银河战士恶魔城学习总结(P152 Lost Currency Save拾取掉落的灵魂)
  • 【RISC-V CPU debug 专栏 3 -- Debugging RISC-V Cores】
  • Web开发基础学习——HTML中id 和 class 标识和选择元素的属性的理解
  • HCIE IGP双栈综合实验