前言

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。 --- wiki百科

公钥私钥对

使用 ssh-keygen 创建 id_rsa 和 id_rsa.pub

ssh-keygen -t rsa -C "your_email@example.com"
[hostname ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:

步骤解说

输入步骤1:
Enter file in which to save the key (/home/admin/.ssh/id_rsa)
设置保存公钥的地址

输入步骤2:
Enter passphrase (empty for no passphrase):
设置公钥密码, 默认为空, 如果设置了则需要修改连接方式 ssh -K xxx

输入步骤3:
Enter same passphrase again:
重复设置公钥密码

结束后会生成 id_rsa (私钥)和 id_rsa.pub (公钥) 两个文件

正文

使用场景

- 远程服务器1连接远程服务器2
- 本地拉取远程GIT代码
- 脚本部署代码

远程服务器连接

假设我现在有两台服务器

  • 服务器A 10.0.0.1
  • 服务器B 10.0.0.2

若想要服务器A能够不用密码登录服务器B,则需要把服务器A的 id_rsa.pub 加入服务器B某个用户的authorized_keys, 然后执行 ssh b@10.0.0.2

第一次用服务器a连接服务器b 是都会有一段 finger 验证

The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established.
RSA key fingerprint is 70:e5:23:cf:dc:03:2d:09:40:4a:2a:c6:c5:17:e2:32.
Are you sure you want to continue connecting (yes/no)? 

意图是要将服务器b的公钥存放在服务器a的 ~/.ssh/know_hosts 文件里面

# 忽略输入yes/no
ssh -o StrictHostKeyChecking=no b@10.0.0.2

本地拉取远程GIT代码

假设有以下几台机器

  • 本地机器 local
  • 远程机器 git

以github为例, 我们将本地及其 地址为: https://github.com/settings/s...
图片如下:

我们在客户端机器上生成的 id_rsa.pub 填写至这个表单中, 这就表示github的仓库允许我们用户去拉取代码。

脚本部署代码

假设我们使用ssh-keygen生成一组deploy的(deploy_id_rsa.pub)公钥,(deploy_id_rsa)私钥。 具体执行方式

# deploy.sh# 手动开启ssh
eval $(ssh-agent -s)
# 添加deploy私钥
ssh-add ./deploy_id_rsa
# 查看ssh-agent中的密钥
ssh-add -l
# 从ssh-agent 删除 deploy密钥, 需要依靠 deploy公钥
ssh-add -d ./deploy_id_rsa.pubexport deploy_server=b@10.0.0.2
export deploy_path=/home/www/webrootssh -o StrictHostKeyChecking=no -P22 ${deploy_server} "mkdir -p ${deploy_path}/public"
ssh -o StrictHostKeyChecking=no -P22 ${deploy_server} "mkdir -p ${deploy_path}/_tmp"
scp -P22 -r build/* ${deploy_server}:${deploy_path}/_tmp
ssh -p22 ${deploy_server} "mv ${deploy_path}/public ${deploy_path}/_old && ${deploy_path}/_tmp ${deploy_path}/public"
ssh -p22 server_user@server_host "rm -rf ${deploy_path}/_old"

上述脚本的作用就是将build的所有内容传输到 服务器b/home/www/webrrot/public里面

小结

作者目前使用的道德ssh相关情况为以上几种情况, 但ssh的作用远不止上述列的几项。等到升入了解后再补充该文。 欢迎大家留言提问,及点赞收藏 !!

【运维】Linux 系统 之 SSH相关推荐

  1. 安全运维 | Linux系统基线检查

    声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全.企业安全.国家安全. 1 查询系统信息 1 ...

  2. linux下进程监控6,系统运维|Linux系统监控神器-Collectl

    系统资源监控 为使系统良好运转,Linux系统管理员经常需要监测cpu,内存,磁盘,网络等系统信息.Linux上已有iotop,top,free,htop,sar等丰富的常规工具来实现监测功能.今天让 ...

  3. 运维Linux系统中的用户管理

    一.用户及用组存在的意义 1)用户存在的意义 系统资源是有限的,如何合理的分配系统资源? 在这个问题解决时必须要有连个资源配合 1.身份        account 2.授权        auth ...

  4. 云计算Linux运维——Linux系统——软件管理

    点关注不迷路 目录 点关注不迷路 1RPM软件管理 1.软件安装包类型 2.RPM软件安装包的组成 二.RPM软件管理操作 rpm命令 1.安装软件 2.查看软件 3.卸载软件 2yum工具介绍 一. ...

  5. 基于Linux+Nagios+Centreon+Nagvis等构建海量运维监控系统

    参考书目:<海量运维监控系统规划与部署 基于Linux+Nagios+Centreon+Nagvis等> 付哲著 系统环境规划: 基于阿里云centos6.8镜像升级到centos6.9, ...

  6. Linux运维-服务器系统篇

    Linux运维-服务器系统篇 开篇导读: 本篇博文是此系列教程的第二课,在这一课中将大概的介绍一下服务器上的操作系统,了解一下它的基本概念和发展历程. 服务器系统的概念和作用 如何理解服务器操作系统? ...

  7. 江南科友 hac linux shell,运维安全审计系统(HAC 1000E、HAC 1000P)

    "运维安全审计系统(HAC 1000E.HAC 1000P)"详细介绍 堡垒机.HAC.运维安全审计系统.江南科友堡垒机.内控堡垒机.运维堡垒机.HAC 1000-E.HAC 10 ...

  8. linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?

    今天小编要跟大家分享的文章是关于Linux系统中SSH命令的用法有哪些?一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方.要亲自一台一台的去访问来管理它们显然不是最好的方法,通 ...

  9. 可快速部署的轻量级运维监控系统——WGCLOUD

    WGCLOUD,是国人开源的一款运维监控系统,轻巧实用,具备高性能.自动化等特点,对新手来讲,几乎没有什么学习成本,上手可用,部署方便. 这是一张wgcloud运行的数据通信图 WGCLOUD的ser ...

  10. linux环境变量管理器,运维 - linux(ubuntu) 环境变量管理 (持续更新)

    运维 - linux(ubuntu) 环境变量管理 (持续更新) 注: 本教程以 Ubuntu16.04 操作, 请细看. 如果看完还不明白, 联系我, 我给你发红包. 一, 查看环境变量: 方法 1 ...

最新文章

  1. 【错误记录】Git 使用报错 ( git branch -a 仍能查询到已经删除的远程分支 )
  2. 004_Queue消息模式发送文本消息
  3. gitlab-runner 安装使用
  4. cmd.exe启动参数说明
  5. 微软宣布 Edge 浏览器将切换至 Chromium 内核
  6. 【Java并发.2】线程安全性
  7. HTML5--植物大战僵尸网页版
  8. 第7章页面布局-布局综合示例
  9. 自制ADK To Win11PE,加入原生explorer,初步修改注册表(图文1.1万字,很细) (2)
  10. contiki学习笔记(二)CTK图形界面
  11. 简单七个步骤写一份策划方案(上)
  12. pandas选取excel特定两列,上下行数值相减,降采样,缺失值处理,按数值范围去除行的处理,在pycharm画图实例
  13. android 音频裁剪(1)—MP3裁剪
  14. Winlogon通知包(Winlogon Notification Package)
  15. 我们精通那么多技术,为何还是做不好一个项目?
  16. Java可变长参数列表
  17. 定义页面元信息标记meta
  18. office2013视频教程免费观看
  19. 火爆全网!这个 Python 项目很骚气!
  20. python录音播放_Python实现录音和播放功能

热门文章

  1. 26进制(字母)转十进制算法
  2. JavaScriptSerializer进行JSON序列化,得到字符串
  3. 必须掌握的八个【cmd 命令行】[
  4. Maven学习总结(二)——Maven项目构建过程练习
  5. Android 获取当前日期距离过期时间的日期差值的完整方法直接使用
  6. PHP - 如何在函数内访问另一个文件中的变量
  7. web常见几种处理图标方法 【转】
  8. 快讯|工业大数据产业发展联盟成立,助力我国产业生态集聚
  9. Java并发框架——AQS之怎样使用AQS构建同步器
  10. springmvc处理ajax请求