y   小y笔记


==============  我的Linux学习笔记  ==============
主页     Linux常用命令     Linux系统管理     Linux网络管理     shell script    


OpenSSH



OpenSSH:

ssh:secure shell, protocol, 22/tcp, 安全的远程登录
OpenSSH: ssh协议的开源实现;
dropbear:另一个开源实现;

SSH协议版本
v1:基于CRC-31做MAC,不安全:man-in-middle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;

两种方式的用户登录认证:
基于passwd
基于key

OpenSSH:
C/S
C: ssh, scp, sftp
Windows客户端:
xshell, putty,securecrt,sshsecureshellclient
S: sshd

客户端组件:
ssh,配置文件:/etc/ssh/ssh_config

格式:ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]
-p port:远程服务器监听的端口;
-X:支持x11转发;
-Y:支持信任的x11转发;

Host PATTEN
PARAMETER

基于密钥的认证:
(1)在客户端生成密钥对
ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
(2) 把公钥传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [user@]machine
例:ssh-copy-id -i .ssh/id_rsa.pub root@172.16.100.9
(3) 测试
scp命令:
scp [options] SRC... DEST/

存在两种情形:
PULL:scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
PUSH: scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE
常用选项:
-r: 递归复制;
-p:保持原文件的属性信息;
-q: 静默模式
-P PORT:指明remote host的监听的端串口

sftp命令:
sftp [user@]host
sftp> help

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

常用参数:
Port 22022
ListenAddress ip 通常改成内网地址,不要监听外网地址
ListenAddress 0.0.0.0表示监听本机的所有地址
PermitRootLogin yes

限制可登录用户的办法:
AllowUsers user1 user2 user3(配置文件中设置)
AllowGroups

ssh服务的最佳实践:
1.不要使用默认端口;
2.禁止使用protocol version 1;
3.限制可登录用户;
4.设定空闲会话超时时长;
5.利用防火墙设置ssh访问策略;
6.仅监听特定的ip地址;
7.基于口令认证时,使用强密码策略;
#tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xrags
8.使用基于密钥的认证;
9.禁止使用空密码;
10.禁止root用户直接登录;
11.限制ssh的访问频度和关发在线数;
12.做好日志,经常分析;

ssh协议的另一个实现:dropbear
(1) dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
dropbear -t dss -f /etc/dorpbear/dropbear_dss_host_key
dropbear -p [ip:]port -F -E


copyright©lssyg