你真的理解ssh吗?5分钟ssh入门到精通

简介: 这篇文章提供了SSH的基础知识、基础使用、高级配置方法,以及如何实现SSH的免密登录,帮助用户从入门到精通SSH。

SSH 为 Secure Shell 的缩写,它是建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台,目前SSH在几乎所有 UNIX 平台上受到支持。

SSH 协议存在以下特征:

  • 有效防止远程管理过程中的信息泄漏
  • 传输数据加密,能够防止DNS和IP欺骗
  • 传输数据压缩,加快传输速度

一. 基础使用

OpenSSH 是 SSH协议的流行的免费开源实现。OpenSSH提供了服务端程序(openssh-server)和客户端工具(openssh-client)。

UNIX 平台系统(Linux/MacOS)等一般都默认安装了 SSH 客户端,直接在终端中使用SSH命令即可,Windows 等其它平台则需要手动安装 SSH 客户端,较常用的Windows SSH客户端有Putty和XShell等。

Ubuntu/Debian的安装方式如下:

# 安装服务端/客户端(Ubuntu/Debian)
$ sudo apt install openssh-server/openssh-client

# 查看ssh服务是否开启
$ netstat -tlp | grep ssh

# 启动/停止/重启 ssh服务
$ sudo /etc/init.d/ssh start/stop/restart

SSH服务端配置文件默认为/etc/ssh/sshd_config,可以按需修改默认22端口等配置。

# 命令格式
# user远程服务器登录的用户名,默认为当前用户
# hostname远程服务器地址。可以是IP/域名/别名
# exit或logout命令均可退出当前登录
$ ssh [-options] [user@hostname]
options 含义
-p 指定ssh端口号,默认端口为22
-i 使用指定私钥文件连接服务器免密登录

样例如下:

# 以root用户登录192.168.1.196的到ssh服务器
$ ssh root@192.168.1.196

# 以root用户登录到192.168.1.198的ssh服务器,使用2222端口
$ ssh -p 2222 root@192.168.1.198

二. SSH高级配置

SSH配置信息一般保存在 ~/.ssh 目录下。

配置文件 作用
known_hosts 作为客户端。记录曾连接服务器授权。SSH第一次连接一台服务器会有一个授权提示,确认授权后会记录在此文件中,下次连接记录中的服务器时则不再需要进行授权确认提示
authorized_keys 作为服务端。客户端的免密连接公钥文件
config 作为客户端。记录连接服务器配置的别名

2.1 服务器别名

远程管理命令(如ssh,scp等)连接一台服务器时一般都需要提供 服务器地址、端口、用户名 ,每次输入比较繁琐,我们可以把经常使用的服务器连接参数打包记录到配置文件中并为其设置一个简单易记的别名。这样我们就可以通过别名方便的访问服务器,而不需要提供地址、端口、用户名等信息了。

配置方法如下:

创建或打开 ~/.ssh/config,在文件追加服务器配置信息
一台服务器配置格式如下:(以下配置中只有HostName是必选项,其他都可按需省略。)

Host ColinMac
  HostName 192.168.1.196
  User colin
  Port 22

配置完成后远程管理命令中就可以直接使用别名访问了。

$ ssh ColinMac
$ scp abc.txt ColinMac:Desktop

2.2 免密登录

# 命令格式
$ ssh-keygen [-options]
options 含义
-t 指定加密类型,默认为非对称加密(rsa), 所有可选项[dsa,ecdsa,ed25519,rsa]
-f 密钥文件名。
-C 注释,将附加在密钥文件尾部

远程管理命令(如ssh,scp等)每次都需要提供用户密码保证安全。除此之外,我们也可配置使指定加密算法验证密钥文件的方式,避免每次输入密码
配置免密登录后,ssh连接和scp等远程管理命令都不需要再输密码
生成密钥时若指定了文件名,连接服务器时需要通过-i指定要验证的密钥文件,形如:ssh -i file user@host。默认文件名则可省略
默认配置只需以下两步:

# 客户端生成密钥对
$ ssh-keygen

# 上传公钥到服务器
$ ssh-copy-id user@hostname   # 文件会自动上传为服务器特定文件 ~/.ssh/authorized_keys

完成以上步骤后直接使用ssh ColinUbuntu即可登录,服务器地址和密码均不用录入。

2.3 免密钥文件登录

出于安全考虑,大部分服务器提供商如要求使用密钥文件进行远程登录,如GCP和AWS。下面我们以GCP为例来看如何简化连接操作,这搞起来吧…

2.3.1 生成密钥对
$ ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
$ chmod 400 ~/.ssh/[KEY_FILENAME]

https://cloud.google.com/compute/docs/instances/access-overview?hl=zh-cn#createsshkeys

2.3.2 上传公钥

在Compute Engine页面左侧菜单找到元数据,将上一步生成的公钥文件(KEY_FILENAME_pub)内容添加到SSH密钥中即可。
在这里插入图片描述

2.3.3 连接GCP

使用以下命令登录即可

$ ssh -i ~/.ssh/KEY_FILENAME [USERNAME]@[IP_ADDRESS]
2.3.4 简化登录

以上是GCP官方步骤,使用IdentityFile方式进行登录,每次登录都要通过-i选项指定私钥路径比较繁琐,我们可以将密钥文件添加到ssh客户端config中以简化连接命令。

Host *
 AddKeysToAgent yes
 UseKeychain yes  # only for mac

Host tu
   HostName IP_ADDRESS
   Port 22
   User USERNAME
   IdentityFile ~/.ssh/gcp

按照以上配置添加到~/.ssh/config

# 后台运行ssh-agent
$ eval "$(ssh-agent -s)"
# 添加密钥到ssh-agent
$ ssh-add -K ~/.ssh/gcp

完成以上配置后,连接服务器只需使用 ssh tu 即可。

除了连接云服务器,GitHub等服务也可是通过以上方式连接

相关文章
|
8天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
4天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2463 14
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
4天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1503 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19274 29
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18822 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17515 13
Apache Paimon V0.9最新进展
|
6天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
366 11
|
1月前
|
存储 人工智能 前端开发
AI 网关零代码解决 AI 幻觉问题
本文主要介绍了 AI Agent 的背景,概念,探讨了 AI Agent 网关插件的使用方法,效果以及实现原理。
18697 16
|
2天前
|
算法 Java
JAVA并发编程系列(8)CountDownLatch核心原理
面试中的编程题目“模拟拼团”,我们通过使用CountDownLatch来实现多线程条件下的拼团逻辑。此外,深入解析了CountDownLatch的核心原理及其内部实现机制,特别是`await()`方法的具体工作流程。通过详细分析源码与内部结构,帮助读者更好地理解并发编程的关键概念。
|
2天前
|
SQL 监控 druid
Druid连接池学习
Druid学习笔记,使用Druid进行密码加密。参考文档:https://github.com/alibaba/druid
195 82