第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软件分析

(与数据加密相关的软件--openssl)

[root@backup ~]# rpm -ql openssh-server

/etc/ssh/sshd_config    --- ssh服务配置文件

/usr/sbin/sshd          --- ssh服务进程启动命令

[root@backup ~]# rpm -ql openssh-clients

/usr/bin/scp            --- 远程拷贝命令

/usr/bin/sftp           --- 远程文件传输命令

/usr/bin/slogin         --- 远程登录命令

/usr/bin/ssh            --- 远程连接登录命令

/usr/bin/ssh-copy-id    --- 远程分发公钥命令

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

2.2 ssh远程登录服务器命令

ssh -p22 oldboy@10.0.0.150 [命令]

# SSH连接远程主机命令的基本语法;

# ssh 命令

# -p(小写), 用于指定远程主机端口,默认22端口可省略

# oldboy@remotehost

# "@"前面为用户名,如果用当前用户连接,可以不指定用户

# "@"后面为要连接的服务器的IP

2.3 scp命令详解

scp复制数据至远程主机命令(全量复制)
 SSH连接远程主机命令的基本语法;

 scp 命令

 -P(大写) 指定端口,默认22端口可不写

 -r 表示递归拷贝目录

 -p 表示在拷贝文件前后保持文件或目录属性不变

 -l 限制传输使用带宽(默认kb)

2.3.1 推:PUSH,上传

# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.150:/tmp

# /tmp/oldboy为本地的目录。

# “@”前为用户名

# “@”后为要连接的服务器的IP。

# IP后的:/tmp目录,为远端的目标目录。

# 说明: 以上命令作用是把本地/tmp/oldboy推送至远端服务器10.0.0.150的/tmp目录

2.3.2 拉:PULL,下载

# scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/

# 还可以将远端目录或文件拉取至本地

2.3.3 SCP命令结论

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

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

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

2.4 Sftp命令详解

Sftp远程数据传输命令

sftp连接远程

sftp root@192.168.56.12

sftp -oPort=52113 root@10.0.0.41 <-sftp的特殊端口连接

下载文件, 至于本地服务器

sftp> get conf.txt /tmp/

上传本地服务器文件, 至远程服务器

sftp> put /root/t1.txt /root/

sftp-->XFTP

    1.支持批量上传文件

    2.支持单个文件超过4G

    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软件安装

客户端

[root@nfs01 ~]# rpm -qf `which ssh`

openssh-clients-5.3p1-122.el6.x86_64

服务端软件

[root@nfs01 ~]# rpm -qf `which sshd`

openssh-server-5.3p1-122.el6.x86_64

注意:使用sshd采用绝对路径进行启动

[root@test ~]# sshd

sshd re-exec requires execution with an absolute path

第3章 SSH连接方式

3.1 基于账户密码远程登录

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

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

  ~ ssh -p22 root@10.0.0.60

root@10.0.0.60's password:

[root@m01 ~]#

3.2 基于秘钥远程登录

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

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

[root@m01 ~]# ssh-keygen -t rsa -C 943271736@qq.com

...

默认一路回车即可, 当然也可以根据不同需求进行修改

...

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

命令示例: ssh-copy-id [-i [identity_file]] [user@]machine

ssh-copy-id 命令

-i          指定下发公钥的路径

[user@]     以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥

machine     下发公钥至那台服务器, 填写远程主机IP地址

秘钥分发, [会将A服务器的公钥写入B服务器~/.ssh/authorized_keys文件中]

[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

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

远程登录对端主机方式

[root@m01 ~]# ssh root@172.16.1.41

[root@nfs ~]#

不登陆远程主机执行命令

[root@m01 ~]# ssh root@172.16.1.41 "hostname -i"

172.16.1.41

可能遇到错误

1.no route to host  防火墙

2.Connection refused  防火墙或服务未启用

3.3 telnet连接

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

安装telnet服务,然后使用root登录测试

[root@web01 ~]# yum install telnet-server -y

[root@web01 ~]# systemctl start telnet.socket

使用xshell的新建标签,输入如下指令[登录不上]

[e:\~]$ telnet 10.0.0.7

Kernel 3.10.0-862.el7.x86_64 on an x86_64

web01 login: root

Password:

Login incorrect

创建一个普通用户,再次使用telnet登录测试

[root@web01 ~]# useradd od

[root@web01 ~]# echo "1" | passwd --stdin od

[e:\~]$ telnet 10.0.0.7

web01 login: od

Password:

Last login: Mon Sep 10 09:57:39 from ::ffff:10.0.0.1

[od@web01 ~]$

第4章 ssh服务配置文件

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

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

#参数 表示配置参数信息

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

4.1 ssh服务的配置文件路径

vim  /etc/ssh/sshd_config

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

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

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

[root@backup ~]# vim /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

# This is the sshd server system-wide configuration file.  See

# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options change a

# default value.

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options change a

# default value.

Port 25113                   #端口

ListenAddress 10.0.0.41      #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务

PermitRootLogin no           #是否允许root用户登陆

#PermitEmptyPasswords no     #禁止空密码登陆

#UseDNS no                   #不使用DNS

GSSAPIAuthentication no      #API认证

连接慢的解决

#AddressFamily any         #指定监听ipv4地址,或是ipv6地址,或者所有都监听
 

配置文件内容说明:

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

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

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

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

4.3 配置文件语法检查方法

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

正确

[root@backup ~]# sshd -t /etc/ssh/sshd

Extra argument /etc/ssh/sshd.

语法格式有错误

[root@test ~]# sshd -t /etc/ssh/sshd_config

/etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile

/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. HDU 5360 【优先队列+贪心】

    题意: 给定N个无序区间. 对合法区间的定义是: 在这个区间之前已经选出了至少l个合法区间,最多选出了r个合法区间.则该区间为合法区间. 输出最多能挑选出多少个合法区间,并输出合法区间的数量. 思路: ...

  2. java collection集合

    集合:用于存储对象的容器.集合中可以存储任意类型的对象,长度可变. 集合和数组的比较 集合和数组都是存储对象的容器,不同的是,数组可以存储基本数据类型(int.short.long.char.Bool ...

  3. 安装使用Spring boot 写一个hello1

    一.创建springboot 项目 二.进行代编写 1.连接数据库:application.properties里配置 spring.datasource.driverClassName=com.my ...

  4. MySQL学习系列之触发器

    触发器简介 触发器作用: 监控某种事件并触发某种动作 触发语法: CREATE TRIGGER trigger_name trigger_event ON tbl_name FOR EACH ROW ...

  5. SecureCRT5 中文乱码

    SecureCRT5 中文乱码 secureCRT7已经不用这样设置了: 学习了:http://www.iitshare.com/securecrt-chinese-garbled-solution. ...

  6. curl 发送json请求

    curl 发送json请求 这个是在cmd环境下的输入:注意{\"userName\":\"helo\",\"id\":1}中间不能有空格 ...

  7. 当Eclipse爱上SVN

    推荐使用:Subclipse  :http://jingyan.baidu.com/article/1612d5007d41e9e20e1eeeff.html 为离线安装做准备: 1.下载Subver ...

  8. Office EXCEL 中单元格怎么打斜线

    右击单元格,然后设置单元格格式,然后添加需要的边框     注意里面的文字有讲究,比如我要右上角显示Value,左下角显示Payload,则需要先输一堆空格,然后输入Value,把Value挤到右边去 ...

  9. coco2d-x怎样创建project

    不知道coco2d-x从那个版本号開始用python创建project,一句话搞定,确实省去了好多麻烦. 首先定位到coco2d-x的文件夹到cocos2d-x-2.2.3\cocos2d-x-2.2 ...

  10. Android 使用图片异步载入框架Universal Image Loader的问题

    使用的Jar包 问题:        optionsm = new DisplayImageOptions.Builder()         .displayer(new RoundedBitmap ...