资讯专栏INFORMATION COLUMN

【运维】Linux 系统 之 SSH

felix0913 / 2974人阅读

摘要:前言安全外壳协议,简称是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。虽然任何网络服务都可以通过实现安全传输,最常见的用途是远程登录系统,人们通常利用来传输命令行界面和远程执行命令。

前言
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.pub

export deploy_server=b@10.0.0.2
export deploy_path=/home/www/webroot

ssh -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的作用远不止上述列的几项。等到升入了解后再补充该文。 欢迎大家留言提问,及点赞收藏 !!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10675.html

相关文章

  • 几款必备的云服务器运维必备的SSH软件

    对于服务器运维工作来说,我们少不了SSH远程客户端管理工具。我们在用哪款呢?比如常见用的包括PuTTY、XShell、WindTerm等,有很多的付费或者免费的,既然有这么多免费且好用的为什么我们还会选择付费的呢?在这篇文章中,乐小虎就来盘点市面上6款好用的SSH客户端软件,如果我们有需要的化当然建议到官方下载,确保软件的版本最新 ,以及安全。PS:对于FTP、SSH等服务器运维软件工具,不建议下...

    i 评论0 收藏0
  • Linux运维习惯小结

    摘要:从事运维一年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题今天想简单整理一下,分享给各位小伙伴一线上操作规范测试使用当初学习的使用,从基础到服务到集群,都是在虚拟机做的,虽然老师告诉我们跟真机没有什么差别, 从事运维一年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题 今天想简单整理一下,分享给各位小伙伴 一、线上操作规...

    WalkerXu 评论0 收藏0
  • 初识Ansible自动化运维工具

    摘要:使用自动运维工具,其同样提供了常用模块可用,但较于轻量,无需在被管主机安装,其核心是通过登录主机执行命令,使用方式简单,学习成本低。为何如此强大且好用,作者决定使用实战方式带领初学者迅速掌握此工具,从入门到精通。 前言 2010年左右,当时系统多数运行在小型机上,如HP、Sun、IBM小型机,如某系统当时使用10台小型机,但随着业务量不断增长,前几年去IOE的火热进行,开源技术的不断发...

    April 评论0 收藏0
  • 服务器运维基础指南

    摘要:服务器运维基础指南作为一个开发人员,对于服务器的操作不可避免。最常用的操作就是部署应用到服务器,及在生产,测试环境通过查看日志排查问题。终端会提示你输入密码,此时输入密码,密码正确就可以登录服务器。 服务器运维基础指南 作为一个开发人员,对于服务器的操作不可避免。最常用的操作就是部署应用到服务器,及在生产,测试环境通过查看日志排查问题。 一般服务器都是linux操作系统并且是无图形界面...

    liukai90 评论0 收藏0
  • 服务器运维基础指南

    摘要:服务器运维基础指南作为一个开发人员,对于服务器的操作不可避免。最常用的操作就是部署应用到服务器,及在生产,测试环境通过查看日志排查问题。终端会提示你输入密码,此时输入密码,密码正确就可以登录服务器。 服务器运维基础指南 作为一个开发人员,对于服务器的操作不可避免。最常用的操作就是部署应用到服务器,及在生产,测试环境通过查看日志排查问题。 一般服务器都是linux操作系统并且是无图形界面...

    lufficc 评论0 收藏0

发表评论

0条评论

felix0913

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<