Linux下 SSH远程管理服务

第1章 SSH基本概述

1.1 SSH服务协议说明

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

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

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

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

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

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

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

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

相关文章
相关标签/搜索