SSH

第一章SSH

1、ssh介绍

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

SSH服务端主要提供两个服务:一个是SSH服务,另一个是SP-SERVER客户端:借助SSH服务协议来传输数据的,提供更安全的SFTP服务(vsftpproftp

 

类似CRT,XSHELL特别提醒:SSH客户端(ssh命令)

还包括一个很有用的远程安全拷贝命令scp也是通过ssh协议工作的

 

 

知识点小结:

  1. SSH安全的加密协议,用于远程连接linux服务器
  2. SSH默认的端口是22安全协议版本SSH2,除了2之外还有SSH1(有漏洞)
  3. SSH服务端主要包含两个服务功能SSH远程连接,SFTP服务
  4. LINUX SSH客户端包含SSH远程连接命令,以及远程拷贝scp命令

1.1、 SSH结构

SSH服务由服务端软件OpenSSH(openssl)和客户端(常见的有SSH LINUX, SecureCTR,Xshell组成,

SSH服务端软件

[root@backup 192.168.126.131]# rpm -qa openssh openssl

openssl-1.0.1e-30.el6.x86_64

openssh-5.3p1-104.el6.x86_64

less /etc/ssh/sshd_config查看SSH服务

1.2ssh1x讲解

 

 

 

1x:不安全之处在于没有验证秘钥的机制,黑客可能截取秘钥后伪装进入。

1.3SSH 2X

SSH1.x的联机过程中,当Server接受Clinent端的Private key,就不在针对该次联机的Key pair进行检验,此时若有恶意黑客针对该联机的Key pair对插入的程序代码时,由于服务端你不会在检验联机的正确性,因此可能会接收该程序代码,从而造成系被黑掉的问题

为了改正这个缺点:SSH version 2 多加了一个确认联机正确性的Diffie-Hellman机制,在每次传输数据中,Server都会以该机制检查数据的来源是不是正确。

SSH入侵网友案例:
http://phenixikki.blog.51cto.com/7572938/1546669
如何防止SSH登录入侵:
1、用密钥登录,不用密码登陆。
2、牤牛阵法:解决SSH安全问题

3防火墙封闭SSH指定源限制(局域网)

4开启SSH监听本地IP

1.4  SSH服务认证类型

一种是:基于口令安全认证,要知道服务器的SSH;连接账号和口令(当然也要知道对应服务器的IP开放的端口,默认是22),就可以通过SSH客户端登陆到这台远程主机。

举例说明SecureCRT及SSH客户端连接

[root@Stone ~]# ssh -p22 root@192.168.126.131

The authenticity of host '192.168.126.131 (192.168.126.131)' can't be established.

RSA key fingerprint is 28:65:f6:93:9e:07:e6:82:2d:1d:67:77:bd:7e:96:f7.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.126.131' (RSA) to the list of known hosts.

root@192.168.126.131's password: 

Last login: Sat Sep 19 15:24:19 2015 from 192.168.126.1

ctrl +d 可退出当前系统。同logout

第二种:基于秘钥的安全验证

事先建立一对密钥对,然后把公用秘钥(Public key放在需要访问的目标服务器上,还需要把私有秘钥(Private key放到SSH客户端或对应的客户端服务器上。

一对秘钥对(锁公用秘钥(Public key和钥匙私有秘钥(Private key))

1.5启动SSH服务

端口默认的是22端口

[root@Stone ~]# netstat -lntup|grep sshd

tcp        0      0 0.0.0.0:22      0.0.0.0:*       LISTEN      1071/sshd           

tcp        0      0 :::22    :::*        LISTEN      1071/sshd

服务开启的命令:

[root@Stone ~]# /etc/init.d/sshd  status (restart

openssh-daemon (pid  1071) 正在运行...

查看开机启动服务:

[root@Stone ~]# chkconfig --list sshd

sshd            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

企业面试题:给你一个端口,你如何用命令行查出对应的服务是什么?

解答:

lsof –I :52113

ss –lntup|grep 52113

netstat –lntup|grep 52113

企业面试题:如果给你一个进程名,如何查看对应的端口是什么?

netstat –lntup|grep sshd

1.6更改ssh默认登录配置

#Port 22 :指定sshd进程监听的端口号,默认为22,可以使用多条指令监控多个端口。默认将在本机的所有网络接口上监听,但是可以通过ListenAddress指定在某个特定的接口上监听

#PermitRootLogin yes:是否使用ROOT登录,可用值如下:“yes”表示允许。“no”表示禁止。“without-password”表示禁止使用密码认证登录。“force-commands-only”表示只有在指定了commond选项的情况下才允许使用公钥认证登录。同时其他认证方法全部被禁。这个值常用于做远程备份之类的事情

#PasswordAuthentication yes

#PermitEmptyPasswords no是否允许密码为空的用户远程登录。默认为“no”

PasswordAuthentication yes

GSSAPIAuthentication yes

UseDNS no:指定sshd是否应该对远程主机名进行反向解析,以检查此主机名是否与IP地址真实对应,默认值为“yes

1.7远程连接ssh服务配置

ssh基本语法在工作中不通过CRT直接切换机器就用该命令

[root@Stone ~]# ssh -p22 root@192.168.126.131

The authenticity of host '192.168.126.131 (192.168.126.131)' can't be established.

RSA key fingerprint is 28:65:f6:93:9e:07:e6:82:2d:1d:67:77:bd:7e:96:f7.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.126.131' (RSA) to the list of known hosts.

root@192.168.126.131's password: 

Last login: Sat Sep 19 15:24:19 2015 from 192.168.126.1

当第一次SSH连接的时候,本地会产生一个秘钥文件root/.ssh/known_hosts(多个秘钥)

The authenticity of host '192.168.126.131 (192.168.126.131)' can't be established.

RSA key fingerprint is 28:65:f6:93:9e:07:e6:82:2d:1d:67:77:bd:7e:96:f7.

这部分内容放在了root/.ssh/known_hosts 里(多个密钥)

还有一种用法,不切换用户直接在另一个用户执行命令(最好接全路径)例子:

[root@Web-lamp01 ~]# ssh -p22 root@192.168.126.134 /sbin/ifconfig eth0

root@192.168.126.134's password: 

eth0      Link encap:Ethernet  HWaddr 00:0C:29:D4:AB:50  

          inet addr:192.168.126.134  Bcast:192.168.126.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fed4:ab50/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:836 errors:0 dropped:0 overruns:0 frame:0

          TX packets:635 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:81173 (79.2 KiB)  TX bytes:69065 (67.4 KiB)

ssh基本语法使用

ssh –p22 root@192.168.126.134【命令】

#èssh连接远程主机命令的基本语法,命令要用全路径。

#è-p小写)接端口,默认22端口时可以省略-p22

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

#è@后面为要连接的服务器的IP更多语法,请man ssh

报错字符串对应的可能问题

² no route to host 可能为防火墙

² Connection refuse可能为防火墙,还可能是连接的对端服务没开

1.8客户端附带的远程拷贝scp命令

scp –P22 –r –p /data root@192.168.126.131:/tmp/

scp –P22 –r –p root@192.168.126.131:/tmp//data  拉

-P(大写)端口传输-P表示指定端口

–r 递归表示拷贝目录

–p(小写)保持属性同命令cp一个意思

较rsync而言rsync增量拷贝更有效率但是第一次拷贝文件目录都一样

-l: limit 限制速度(案例)后面接的是 Kbit/s直接加数值

scp只是小结:

1) scp是加密A的远程拷贝,而cp仅为本地拷贝

2) 可以把数据从一台机器推送到另一台机器,也可以从其他服务器把数据拉回到本地执行命令的服务器

3) 每次拷贝都是全量完整拷贝,因此,效率不高,适合第一次拷贝用,如果要增量拷贝,用rsync

1.9ssh服务附带的sftp功能服务

a) linux下连接命令sftp –oPort=22 oldboy@192.168.126.133

b) 上传put加客户端本地路径put /etc/hosts,也可以指定路径上传

put /etc/hosts /tmp

c) 下载get服务端的内容get hosts /etc/

d) 链接到的远端目录为默认目录,也可以切换到其他有权限的目录下

e) 加参数l代表本地命令例子lpwd lls

如何把用户登录的目录限制到指定目录?

windows客户端链接sftp方法:

 

 

直接和windows电脑上直接交互

上传:put  “E\do\kk.txt”  必须有双引号put是将电脑上的文件放到sftp目录下

下载:get b.log   上传到选项会话选项-sftp标签-本地目录(设置的目录)

1.10章节重点小结

  1. 协议版本1.x2.x2.x安全。了解SSH协议原理
  2. 服务端ssh远程连接服务,sftp服务,sshd守护进程,开机要自启动
  3. ssh客户端包含ssh,scp,sftp命令
  4. ssh安全验证方式:口令和密钥,这两种都是基于口令的,SSH密钥登陆的原理
  5. ssh服务安全优化,修改默认端口22禁止远程root连接,禁止DNSssh只监听内网IP
  6. SSH密钥对,公钥(Public key在服务器端,比喻就是锁头。私钥(private key)在客户端,比喻就是钥匙

2、批量管理:

 

在工作中我们所有的机器名和IP地址都要对应到/etc/hosts 文件

 

 

然后通过批量分发给各个机器

posted @ 2017-08-29 10:48  偏偏喜欢你&  阅读(91)  评论(0)    收藏  举报