对ssh的简单理解

ssh:secure shell,protocol,22、tcp安全的远程登录

具体的软件实现:
openssh:ssh协议的开源实现,centos默认安装
dropbear:另一个开源实现
ssh协议版本
v1:基于crc-32做MAC,不安全;man-in-middle 已淘汰
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA实现身份认证
两种方式的用户登录认证
基于password
基于key

openssh软件组成
相关包:openssh,openssh-clients,openssh-server
工具:
基于C/S结构
client:ssh,scp,sftp,slogin
windows客户端:
xshell,putty,securecrt,sshsecureshellclient
server:sshd
ssh客户端:
ssh,配置文件: /etc/ssh/ssh_config
命令格式 : ssh [user@]host [命令]
ssh [-l user] host [命令]
选项: -p port 远程服务监听的端口
-b 指定链接的源ip
-v 调试模式,显示链接的详细过程
-c:压缩方式
-X 支持x11转发
-y 支持信任x11转发
-f 强制伪tty分配
允许实现对远程系统经验证的加密安全访问
当用户远程链接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub(centos7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次链接时,会自动匹配到相应的私钥,不能匹配,将拒绝链接。
ssh服务登录验证方式:
用户/口令
基于密钥
基于用户口令登录验证

1.
1. 客户端发起请求,服务器会把自己的公钥发送给用户
2. 用户会根据服务器发来的公钥对密码进行加密
3. 加密后的信息回传给服务器,服务器用自己的密钥解密,如果密码正确,则用户登陆成功。

基于密钥登录方式

1.
1. 首先在客户端生成一对密钥(ssh-keygen 命令,可交互式设置)
2. 将客户端的公钥ssh-copy-id 拷贝到服务器端
3. 当客户端再次发送一个链接请求,包括ip、用户名
4. 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:cadf
5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服服务端
7. 服务端接收到客户端发来的字符串后,跟之前的字符串进行比对,如果一直就允许免密码登录。

基于密钥认证的实现方法。

1.
1. 在客户端生成密钥对
1. ssh-keygen -t rsa [-p ”] [-f “~/.ssh/id_sra”]

2. 把公钥文件传输至远程服务器对应用户的家目录
1. ssh-copy-id [-i [identity_file]] [user@]host

3. 测试 测试是否已经成功。

重新设置私钥口令
ssh-keygen -p
验证代理 (authentication agent) 保密解密后的密钥

1.
1. 这样口令就只需要输入一次
2. 在GNOME中,代理被自动提供给root用户
3. 否则运行ssh-agent bash

钥匙通过命令添加给代理
ssh-add
scp命令
实现从远程拷贝到本机,或者从本机拷贝到远程。
scp 选项 源 目的地址
详细格式:
scp 选项 [user@]host:/文件路径 /文件路径
scp 选项 /文件路径 [user@]host:/文件路径
常用选项
-c:压缩数据流
-r:递归复制
-p:保持原文件属性信息
-q:静默模式
-P 端口号:指明remote host的监听的端口
rsync命令:
基于ssh和rsh服务实现高效率的远程系统之间复制文件
使用安全的shell连接作为传输方式
rsync -av /etc server1:/tmp 复制目录和目录下的文件
rsync -av /etc/ server1:/tmp 只复制目录下的文件
比scp更快,只复制不同的文件
选项:
-n 模拟复制过程
-v 详细显示过程
-r 递归复制目录树
-p 保留权限
-t 保留时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软连接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-a 存档,相当于-rlptgoD,但不保留ACL(-A)和selinux属性(-X)
sftp命令:
交互式文件传输工具
用法和传统的ftp工具相似
利用ssh服务实现安全的文件上传和下载
使用ls cd mkdir rmdir pwd get put 等指令,可用?或help获取帮助信息、也可(!命令 操作本机)
sftp [user@]host
sftp > help

ssh端口转发
ssh会自动加密和解密所有ssh客户端与服务器端之间的网络数据。但是,ssh还能够将其他tcp端口的网络数据通过ssh链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为ssh为其他tcp链接提供了一个安全的通道来进行传输而得名。例如,telent,SMTP,LDAP这些tcp应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许ssh的连接,也能够通过将tcp端口转发来使用ssh进行通讯。
ssh端口转发能够提供两大功能:
加密ssh client 端至ssh server端之间的通讯数据
突破防火墙的限制完成一些之前无法建立的tcp连接
本地端口转发
-L 本机端口号:目标ip:目标端口 -N 中转的ip
-f 后台启用 -N 不打开远程shell,处于登录状态 -g 启用网关功能
示例:ssh -L 9527:telnetrv:23 -N sshsrv
telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,在解密被转发到telnetsrv:23
远程转发:
-R 9527:目标主机ip:目标主机端口 -N sshsrv
示例:让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
动态端口转发:
当用firefox访问internet时,本机的1080端口作为代理服务器,firefox的访问请求被转发到sshsserver上,由sshserver替之访问internet。
相当于,需要的数据全都经由服务器中转访问。
在本机firefox设置代理socket proxy:127.0.0.1:1080
ssh -D 1080 root@sshserver
图形转发
所有图形化应用程序都是X客户程序
能够通过tcp/ip连接远程X服务器
数据没有加密机,但是它通过ssh连接隧道安全进行
ssh -X user@remotehost gedit
remotehost主机上的gedit工具,将会显示在本机的X服务器上
传输的数据将通过ssh连接加密
ssh服务器端的配置文件
sshd,配置文件:/etc/ssh/sshd_config man帮助 man sshd_config
常用参数
port
listenaddress ip
logingracetime 2m
permintrootlogin yes
strictmodes yes
maxauthtries 6
maxsessions 10
pubkeyauthentication yes
permitemptypasswords no
passwordauthentication yes
gatewayports no
clientaliveinterval (单位秒)
clientalivecountmax (默认3)
usedns yes
gssapiauthentication yes
maxstartups 未认证的连接数最大值,默认值 10 也指并发链接数
banner /path/file
限制可登录用户的办法
AllowUsers user1 user2 user3
DenyUser
AllowGroups
DenyGroups
ssh服务的安全配置思想
不要使用默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时间
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略
tr -dc A-Za-z0-9_ < /dev/urandom |head -30 |xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
做好日志,经常分析

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87598

(0)
何必呢何必呢
上一篇 2017-09-29 10:29
下一篇 2017-09-30 12:18

相关推荐

  • 零距离接触软RAID0和RAID5以及逻辑卷LVM

    一、创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录 1、首先手动给虚拟机添加两块硬盘 2、添加硬盘后,无需关机,直接让内核扫描添加的磁盘 [root@centos6 ~]# echo '- – -' >&nbsp…

    Linux干货 2016-09-01
  • Linux中文件管理类命令初探

    Linux中文件管理类命令初探 文件管理通常指的是对文件或者目录进行的类似复制、移动、删除操作。 1. 文件的复制 cp 在Linux中使用cp指令完成文件复制工作,即copy之意。实际操作中又可以分为以下两种情况: 单源复制 单源复制即复制的源只有一个,这个源可以为文件或者目录。命令语法:cp [OPTION]… [-T] SOURCE DEST在实际…

    Linux干货 2016-11-06
  • sed的详细用法

    sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 sed [option]…&nb…

    Linux干货 2016-11-14
  • http加速器varnish

    一、web缓存概述       缓存,又称加速器,用于加速运行速度较快的设备与较慢设备之间的通信。基于程序的运行具有局部性特征其能实现加速的功能:       时间局部性:一个数据被访问之后,在随后较短的时间内有可能被访问。   &nbsp…

    2016-11-18
  • 文本处理三剑客之 Sed

         Sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自…

    2017-08-26
  • linux的基本命令

    先安装一个软件SecureFX8.0,作为伪终端来远程控制虚拟机 1.hostname是虚拟机连接的IP地址 下面来介绍一些linux的基本命令 1. useradd xx 创建一个用户   userdel xx 删除一个用户 不删除用户的文件   User -r xx  删除一个用户且删除该用户的…

    2017-07-14