第1章 SSH基本概述

1.1 SSH服务协议说明

SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定

在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

在默认状态下,SSH服务主要提供两个服务功能:

一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务。

另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的.提供更安全的SFTP服务(vsftp,proftp)。

1.2 SSH远程服务主要功能

提供远程连接服务器的服务
对传输的数据进行加密

1.3 远程连接方式有哪些

ssh属于密文连接方式
监听在本地22/tcp端口
telnet属于明文连接方式 监听在本地23/tcp端口

1.4 ssh知识要点

ssh是安全的加密协议,用于远程链接linux服务器

ssh 默认端口是22,安全协议版本sshv2,出来2之外还有1(有漏洞)

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

linux ssh 客户端包括ssh 远程链接命令,以及远程拷贝scp命令

1.5 私钥和公钥

ssh实现安全链接建立,利用钥匙和锁头

1. 钥匙=私钥 锁头=公钥,私钥可以解密公钥

2. 公钥可以再网络中传输,私钥再本地主机保存

第2章 SSH相关命令

SSH是典型的客户端和服务端的交互模式, 客户端广泛的支持各个平台
WIndows有很多工具可以支持SSH连接功能, 建议使用Xshell

2.1 openssh软件分析

  1. (与数据加密相关的软件--openssl
  2.  
  3. [root@backup ~]# rpm -ql openssh-server
  4.  
  5. /etc/ssh/sshd_config --- ssh服务配置文件
  6.  
  7. /usr/sbin/sshd --- ssh服务进程启动命令
  8.  
  9. [root@backup ~]# rpm -ql openssh-clients
  10.  
  11. /usr/bin/scp --- 远程拷贝命令
  12.  
  13. /usr/bin/sftp --- 远程文件传输命令
  14.  
  15. /usr/bin/slogin --- 远程登录命令
  16.  
  17. /usr/bin/ssh --- 远程连接登录命令
  18.  
  19. /usr/bin/ssh-copy-id --- 远程分发公钥命令

ssh客户端包含ssh以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全FTP文件传输)等应用程序。

2.2 ssh远程登录服务器命令

  1. ssh -p22 oldboy@10.0.0.150 [命令]
  2.  
  3. # SSH连接远程主机命令的基本语法;
  4.  
  5. # ssh 命令
  6.  
  7. # -p(小写), 用于指定远程主机端口,默认22端口可省略
  8.  
  9. # oldboy@remotehost
  10.  
  11. # "@"前面为用户名,如果用当前用户连接,可以不指定用户
  12.  
  13. # "@"后面为要连接的服务器的IP

2.3 scp命令详解

  1. scp复制数据至远程主机命令(全量复制)
  2. SSH连接远程主机命令的基本语法;
  3.  
  4. scp 命令
  5.  
  6. -P(大写) 指定端口,默认22端口可不写
  7.  
  8. -r 表示递归拷贝目录
  9.  
  10. -p 表示在拷贝文件前后保持文件或目录属性不变
  11.  
  12. -l 限制传输使用带宽(默认kb)

2.3.1 推:PUSH,上传

  1. # scp -P22 -rp /tmp/oldboy oldboy@10.0.0.150:/tmp
  2.  
  3. # /tmp/oldboy为本地的目录。
  4.  
  5. # “@”前为用户名
  6.  
  7. # “@”后为要连接的服务器的IP。
  8.  
  9. # IP后的:/tmp目录,为远端的目标目录。
  10.  
  11. # 说明: 以上命令作用是把本地/tmp/oldboy推送至远端服务器10.0.0.150的/tmp目录

2.3.2 拉:PULL,下载

  1. # scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/
  2.  
  3. # 还可以将远端目录或文件拉取至本地

2.3.3 SCP命令结论

scp通过加密进行远程拷贝文件或目录的命令。

scp拷贝权限为连接的用户对应的权限。

scp支持数据的推送和拉取,但每次都是全量拷贝,效率低下。

2.4 Sftp命令详解

  1. Sftp远程数据传输命令
  2.  
  3. sftp连接远程
  4.  
  5. sftp root@192.168.56.12
  6.  
  7. sftp -oPort=52113 root@10.0.0.41 <-sftp的特殊端口连接
  8.  
  9. 下载文件, 至于本地服务器
  10.  
  11. sftp> get conf.txt /tmp/
  12.  
  13. 上传本地服务器文件, 至远程服务器
  14.  
  15. sftp> put /root/t1.txt /root/
  16.  
  17. sftp-->XFTP
  18.  
  19. 1.支持批量上传文件
  20.  
  21. 2.支持单个文件超过4G
  22.  
  23. 3.支持断点续传

2.5 SSH服务软件详细说明

2.5.1 什么是ssh服务

SSH服务端是一个守护讲程 (daemon).他在后台运行并响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之。

ssh客户端包含ssh以及像scp(远程拷贝) slogin(远程登陆) sftp(安全FTP文件传输)等应用程序。

ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送密钥给 SSH的客户端,此时,客户端本地再将密钥发回给服务端,自此连接建立。

2.5.2 ssh软件安装

  1. 客户端
  2.  
  3. [root@nfs01 ~]# rpm -qf `which ssh`
  4.  
  5. openssh-clients-5.3p1-122.el6.x86_64
  6.  
  7. 服务端软件
  8.  
  9. [root@nfs01 ~]# rpm -qf `which sshd`
  10.  
  11. openssh-server-5.3p1-122.el6.x86_64
  12.  
  13. 注意:使用sshd采用绝对路径进行启动
  14.  
  15. [root@test ~]# sshd
  16.  
  17. sshd re-exec requires execution with an absolute path

第3章 SSH连接方式

3.1 基于账户密码远程登录

基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。此时,联机过程中所有传输的数据都是加密的。

知道服务器的IP端口,账号密码, 即可通过ssh客户端登陆远程主机, 远程主机联机过程中传输数据库都是加密的。

  1. ~ ssh -p22 root@10.0.0.60
  2.  
  3. root@10.0.0.60's password:
  4.  
  5. [root@m01 ~]#

3.2 基于秘钥远程登录

默认情况下,通过ssh客户端登陆远程服务器, 需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性, 建议使用密钥验证方式.

1.在管理服务器上生成密钥,-t密钥类型, -C指定用户邮箱

  1. [root@m01 ~]# ssh-keygen -t rsa -C 943271736@qq.com
  2.  
  3. ...
  4.  
  5. 默认一路回车即可, 当然也可以根据不同需求进行修改
  6.  
  7. ...

2.将A服务器上的公钥推送至B服务器

  1. 命令示例: ssh-copy-id [-i [identity_file]] [user@]machine
  2.  
  3. ssh-copy-id 命令
  4.  
  5. -i 指定下发公钥的路径
  6.  
  7. [user@] 以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥
  8.  
  9. machine 下发公钥至那台服务器, 填写远程主机IP地址
  10.  
  11. 秘钥分发, [会将A服务器的公钥写入B服务器~/.ssh/authorized_keys文件中]
  12.  
  13. [root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

3.A服务器通过密钥方式连接B服务器

远程登录对端主机方式

  1. [root@m01 ~]# ssh root@172.16.1.41
  2.  
  3. [root@nfs ~]#

不登陆远程主机执行命令

  1. [root@m01 ~]# ssh root@172.16.1.41 "hostname -i"
  2.  
  3. 172.16.1.41

可能遇到错误

  1. 1.no route to host 防火墙
  2.  
  3. 2.Connection refused 防火墙或服务未启用

3.3 telnet连接

telnet连接 不加密  无法使用root用户连接

  1. 安装telnet服务,然后使用root登录测试
  2.  
  3. [root@web01 ~]# yum install telnet-server -y
  4.  
  5. [root@web01 ~]# systemctl start telnet.socket
  6.  
  7. 使用xshell的新建标签,输入如下指令[登录不上]
  8.  
  9. [e:\~]$ telnet 10.0.0.7
  10.  
  11. Kernel 3.10.0-862.el7.x86_64 on an x86_64
  12.  
  13. web01 login: root
  14.  
  15. Password:
  16.  
  17. Login incorrect
  18.  
  19. 创建一个普通用户,再次使用telnet登录测试
  20.  
  21. [root@web01 ~]# useradd od
  22.  
  23. [root@web01 ~]# echo "1" | passwd --stdin od
  24.  
  25. [e:\~]$ telnet 10.0.0.7
  26.  
  27. web01 login: od
  28.  
  29. Password:
  30.  
  31. Last login: Mon Sep 10 09:57:39 from ::ffff:10.0.0.1
  32.  
  33. [od@web01 ~]$

第4章 ssh服务配置文件

配置文件中所有注释信息,表示默认参数配置

配置文件中#空格 后面内容表示说明信息

#参数 表示配置参数信息

配置文件参数信息修改后,一旦变为注释,即还原为默认配置

4.1 ssh服务的配置文件路径

  1. vim /etc/ssh/sshd_config

修改SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。

一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何配置。

4.2 配置文件中常用配置说明

  1. [root@backup ~]# vim /etc/ssh/sshd_config
  2.  
  3. # $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
  4.  
  5. # This is the sshd server system-wide configuration file. See
  6.  
  7. # sshd_config(5) for more information.
  8.  
  9. # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
  10.  
  11. # The strategy used for options in the default sshd_config shipped with
  12.  
  13. # OpenSSH is to specify options with their default value where
  14.  
  15. # possible, but leave them commented. Uncommented options change a
  16.  
  17. # default value.
  18.  
  19. # OpenSSH is to specify options with their default value where
  20.  
  21. # possible, but leave them commented. Uncommented options change a
  22.  
  23. # default value.
  24.  
  25. Port 25113 #端口
  26.  
  27. ListenAddress 10.0.0.41 #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务
  28.  
  29. PermitRootLogin no #是否允许root用户登陆
  30.  
  31. #PermitEmptyPasswords no #禁止空密码登陆
  32.  
  33. #UseDNS no #不使用DNS
  34.  
  35. GSSAPIAuthentication no #API认证
  36.  
  37. 连接慢的解决
  38.  
  39. #AddressFamily any #指定监听ipv4地址,或是ipv6地址,或者所有都监听
 

配置文件内容说明:

井号(#)注释的参数信息为默认配置

井号(#)后面有空格的为描述信息

井号(#)后面没有空格的为参数信息

另外:配置文件参数信息修改后,一旦变为注释,即还原为默认配置

4.3 配置文件语法检查方法

使用sshd -t 命令 对配置文件的语法进行检查

正确

  1. [root@backup ~]# sshd -t /etc/ssh/sshd
  2.  
  3. Extra argument /etc/ssh/sshd.

语法格式有错误

  1. [root@test ~]# sshd -t /etc/ssh/sshd_config
  2.  
  3. /etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile
  4.  
  5. /etc/ssh/sshd_config: terminating, 1 bad configuration options

4.4 SSH配置文件相关参数

命令参数

参数说明

Port

指定sshd进程监听的端口号,默认为22.可以使用多条指令监听多个端口.

默认将在本机的所有网络接□上监听,但是可以通过ListenAddress指走只在某个特定的接口上监听.

PermitEmptyPasswords

是否允许密码为空的用户远程登录.默认为"no"

PermitRootLogin

是否允许root登录.可用值如下:"yes"(默认)表示允许."no"表示禁止.

"without-password"表示禁止使用密码认证登录."forced-commands-only"表示只有在指走了command选项的情况下才允许使用公钥认证登录.同时其它认证方法全部被禁止.这个值常用于做远程备份之类的事情.

1.多开一个窗口

2.临时多部署一条连接方式

3.给普通用户sudo权限

UseDNS

指定定sshd是否应该对远程主机名进行反向解折,以检查此主机名是否与其IP地址真实对应.默认值为"yes”.

ListenAddress

指定监听并提供服务相应的网卡地址信息

Linux下 SSH远程管理服务的更多相关文章

  1. linux下SSH远程连接服务慢解决方案

    1.适用命令及方案如下:[远程连接及执行命令]ssh -p22root@10.0.0.19ssh -p22 root@10.0.0.19 /sbin/ifconfig[远程拷贝:推送及拉取]scp - ...

  2. Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务

    SSH远程管理服务 1. 远程管理服务知识介绍 # 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Worki ...

  3. SSH远程管理服务实战

    目录 SSH远程管理服务实战 1.SSH基本概述 2.SSH相关命令 3.Xshell连接不上虚拟机 4.scp命令 5.sftp命令 6.SSH验证方式 7.SSH场景实践 8.SH安全优化 9.交 ...

  4. 五.ssh远程管理服务

    01. 远程管理服务知识介绍 1) SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定: ...

  5. Linux 下 SSH 远程超时解决方案

    Linux 下 SSH 远程超时解决方案 今天突然看到一个问题说是如何解决SSH远程超时的问题. 找了一点资料.用于解决这个需求~ 第一种:OpenSSH 配置文件设置 位于112行的 "C ...

  6. Linux系统学习 八、SSH服务—SSH远程管理服务

    1.SSH简介 ssh(安全外壳协议)是Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议.传输的时候是经过加密的,防止信息泄露,比telnet(明文传递)要安全很多. ftp安装 ...

  7. linux运维、架构之路-SSH远程管理服务

    一.SSH服务功能介绍 1.远程登录管理 提供类似telnet远程联机服务器的服务,即上面提到的SSH服务 2.远程传输文件 是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供 ...

  8. 6、SSH远程管理服务实战

    1.SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务. 2.对传输 ...

  9. linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录

    最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ...

随机推荐

  1. 数据库备份与还原c#.net实现

    原文发布时间为:2008-10-25 -- 来源于本人的百度文章 [由搬家工具导入] 数据库备份与还原c#.net实现: 页面上面有 备份,还原,下拉菜单(浏览备份文件夹下面的所有文件名),删除(删除 ...

  2. UVA 861 组合数学 递推

    题目链接 https://vjudge.net/problem/UVA-861 题意: 一个国际象棋棋盘,‘象’会攻击自己所在位置对角线上的棋子.问n*n的棋盘 摆放k个互相不攻击的 '象' 有多少种 ...

  3. VS2015 android 设计器不能可视化问题解决。

    近期安装了VS2015,体验了一下android 的开发,按模板创建执行了个,试下效果非常不错.也能够可视化设计.但昨天再次打开或创建一个android程序后,设计界面直接不能显示,显示错误:(可能是 ...

  4. Deepin-还原Windows平台

    首次启动! 是不是感觉很迷茫呢? 找不到存在感 先设置成Windows那种高校模式(右键下面任意区域) OK了吧,然后我们找到“启动器”或者按Windows键(在Deepin linux我们称为Sup ...

  5. POJ 1679 The Unique MST 推断最小生成树是否唯一

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22715   Accepted: 8055 D ...

  6. apache下配置认证用户

    有时候我们须要给我apacheserver下制定的文件夹加上用户认证,方便一些而用户进行文件的浏览.配置例如以下: 1 设置用户 1 htpasswd -c file_path user_name 回 ...

  7. 软件质量之道:PCLint之中的一个

    故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能. 孟子 1引子 今天听老韩一席话,当真是感慨万千啊.心怀斗志昂扬.奋斗十年,到头来.却看到身 ...

  8. 全局最小割模版 n^3

    //点标从0-n-1, 開始时先init 复杂度n^3 //对于边(u,v,flow): //g[u][v]+=flow; //g[v][u]+=flow; typedef long long ll; ...

  9. JavaScript-创建第一个自己的类库

    通过上一节面向对象和原型的学习. 我们知道了怎样创建一个类,包含类的私有化属性和方法.公有化属性和方法.静态属性和方法.在这里略微回想一下.首先要创建一个类能够通过1.new object().2.利 ...

  10. C语言细节笔记2

    C语言常见问题笔记:    1. 指针的声明     char * p1, p2;  p1 是一个指向char类型的指针,而p2是一个char类型变量  这是由于 * 并不是基本类型的一部分,而是包含 ...