复习linux——ssh服务

SSH服务

ssh:安全的远程登录,实现加密通信,代替传统的telnet协议
具体的软件实现
openssh:ssh协议的开源实现
dropbear:另一个ssh协议的开源项目的实现

ssh公钥交换原理
客户端发起连接请求——客户端得到服务端的公钥——客户端生成自己的公钥或会话ID并用服务端公钥加密发送给服务端——服务端用自己的私钥解密计算出客户端的公钥——双方各自持有自己的公钥私钥和对方的公钥

openssh服务

服务端

程序:/usr/sbin/sshd
Unit文件:/usr/lib/systemd/system/sshd.service

客户端

ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问
当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机的~/.ssh/know_hosts
ssh客户端配置文件:/etc/ssh/ssh_config

ssh命令

格式:ssh [user@]host[COMMAND]    ssh [-l user] host [COMMAND]
常用选项
-p 远程服务器监听的端口
-b 指定连接的源IP
-v 调试模式
-C 压缩方式
-X 支持x11转发
-t 强制伪tty分配
-o option
-i 指定私钥文件路径,实现基于key验证,默认使用文件:~/.ssh/*dsa

其它ssh客户端工具

scp命令

scp [options] SRC ... DEST/
常用选项
-C 压缩数据流                  -r 递归复制               -p 包持原文件的属性信息
-q 静默模式                -P PORT 指明remote host的监听的端口

rsync命令

实现高效率的远程系统之间复制文件,使用安全的shell连接作为传输方式,比scp更快,基于增量数据同步,即只复制两方不同的文件
常用选项:
-n 模拟复制过程            -v 显示详细过程         -r 递归复制目录树           -p 保留权限
-t  保留修改时间戳        -g  保留组信息            -o 保留所有者信息         
-l 将软链接文件本身进行复制      -L  将软链接文件执行的文件复制
--progress 显示进度     --bwlimit  限速以KB为单位

sftp命令

自动登陆ssh工具 sshpass

sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码
格式:sshpass [option] command parameters
常见选项
-p password
-f  filename   跟保存密码的文件名,密码是文件内容的第一行
-e  将环境变量SSHPASS作为密码

ssh登陆验证方式

基于用户和口令登录验证

客户端发起ssh请求,服务器会把自己的公钥发送给用户——用户会根据服务器发来的公钥对密码进行加密——服务器用自己私钥解密,如果密码正确,则用户登录成功

基于密钥的登陆方式

在客户端生成一对密钥——将客户端的公钥拷贝到服务端——当客户端再次发送一个连接请求——服务端得到客户端的请求后,会到authorized_keys中查找,如果有相应,就会生成一个字符串——服务端使用客户端拷贝过来的公钥进行加密然后发送给客户端——得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端——服务端接收到客户端发来的字符串后,进行比对,如果一致,允许免密码登陆

实现基于密钥登陆方式

在客户端生成密钥对

ssh-keygen -t rsa [-P 'password'] [-f "~/.ssh/id_rsa]

把公钥文件传输至远程服务器对应用户的家目录

ssh-copy-id [-i [identity_file]] [user@]host

重设私钥口令

ssh-keygen -p

ssh服务器配置

服务器端:sshd
服务器端的配置文件:/etc/ssh/sshd_config

ssh服务的最佳实践

建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登陆
限制ssh的访问频度和并发在线数
经常分析日志

你可能感兴趣的:(linux,linux,ssh,运维)