做运维的过程中,远程连接是非常实用并且常用的的操作,而在众多的远程连接工具中,openssl工具的运用是相当广泛的,所以今天就给大家单独分享一下,关于这一块的一些知识,当然这是做好运维的必须掌握的,所以大家务必多加练习,以便于我们在实际生产中环境能更加便利的使用openssl做维护
1、ssh: secure shell, protocol, 22/tcp, 安全的远程登录
OpenSSH: ssh协议的开源实现
dropbear:另一个开源实现
SSH协议版本
v1: 基于CRC-32做MAC,不安全;man-in-middle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA实现身份认证
两种方式的用户登录认证:
基于password
基于key
2、OpenSSH
C/S
C: ssh, scp, sftp
Windows客户端:
xshell, putty, securecrt, sshsecure,shellclient
S: sshd
3、ssh客户端
客户端组件:
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登录不显示检查提示
4、格式:ssh [[email protected]]host [COMMAND]
ssh [-l user] host [COMMAND]
-p port:远程服务器监听的端口
-b:指定连接的源IP
-v:调试模式
-C:压缩方式
-X: 支持x11转发
-Y:支持信任x11转发 ForwardX11Trusted yes
-t: 强制伪tty分配
ssh -t remoteserver1 ssh remoteserver2
5、允许实现对远程系统经验证地加密安全访问
当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub(centos7.0默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会比较两处是否有不同。
6、基于key认证
基于密钥的认证:
(1)在客户端生成密钥对
ssh-keygen -t rsa [-P ‘‘] [-f “/username/.ssh/id_rsa"]
#ssh-keygen –t rsa –P ‘’ -f “/username/.ssh/id_rsa”
(2)把公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [[email protected]]host
(3)测试
(4)在SecureCRT,Xshell或实现基于key验证
在SecureCRT工具—>创建公钥—>生成Identity.pub文件,转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600
在需登录的ssh主机上执行:ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
(5)重设私钥口令:#ssh-keygen –p
7、验证代理(authentication agent)
保密解密后的密钥
这样口令就只需要输入一次
在GNOME中,代理被自动提供
否则运行ssh-agent bash
钥匙通过命令添加给代理:ssh-add
8、scp命令
scp [options] SRC... DEST/
两种方式:
scp [options] [[email protected]]host:/sourcefile /destpath
scp [options] /sourcefile [[email protected]]host:/destpath
常用选项:
-C: 压缩数据流
-r: 递归复制
-p: 保持原文件的属性信息
-q: 静默模式
-P PORT: 指明remote host的监听的端口
9、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)
10、sftp命令
交互式文件传输工具
用法能和传统的ftp工具相似
利用ssh服务实现安全的文件上传和下载
使用ls cd mkdir rmdir pwd get put等指令,可用?获取帮助信息
sftp [[email protected]]host
sftp> help
11、SSH端口转发
SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH 的连接,也能够通过将 TCP 端口转发来使用 SSH 进行通讯
SSH 端口转发能够提供两大功能:
加密 SSH Client 端至 SSH Server 端之间的通讯数据
突破防火墙的限制完成一些之前无法建立的 TCP 连接
12、本地转发
-L localport:host:hostport sshserver
ssh –L 9527:server1:23 -N server2
telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到server2的ssh服务,再解密被转发到server1:23
data<-->localhost:9527<-->localhost:XXXXX<-->server2:22<-->server2:YYYYY<-->server1:23
选项:
-f 后台启用
-N 不开远程shell
-g 启用网关功能
13、远程转发
-R sshserverport:host:hostport sshserver
ssh –R 9527:server1:23 –N server2
让server2侦听9527端口的访问,如有访问,就加密后转发请求到本机ssh服务,再由本机解密后转发到serve1:23
Data<-->server2:9527<-->server2:22<-->ocalhost:XXXXX<-->localhost:YYYYY<-->server1:23
14、动态端口转发
当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet
在本机firefox设置代理proxy:127.0.0.1:1080
#ssh -D 1080 [email protected]
15、X 协议转发
所有图形化应用程序都是X客户程序
能够通过tcp/ip连接远程X服务器
数据没有加密机,但是它通过ssh连接隧道安全进行
ssh -X [email protected] gedit
remotehost主机上的gedit工具,将会显示在本机的X服务器上
传输的数据将通过ssh连接加密
16、服务器端配置文件:/etc/ssh/sshd_config
常用参数:
Port
ListenAddress ip
PermitRootLogin yes
ClientAliveInterval 0
UseDNS yes
限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups
17、ssh服务的最佳配置
1、不要使用默认端口
2、禁止使用protocol version 1
3、限制可登录用户
4、设定空闲会话超时时长
5、利用防火墙设置ssh访问策略
6、仅监听特定的IP地址
7、基于口令认证时,使用强密码策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
8、使用基于密钥的认证
9、禁止使用空密码
10、禁止root用户直接登录
11、限制ssh的访问频度和并发在线数
12、做好日志,经常分析