ssh: secure shell, protocol, 22/tcp, 安全的远程登录
OpenSSH: ssh协议的开源实现;
dropbear:另一个开源实现;
SSH协议版本
v1: 基于CRC-32做MAC,不安全;man-in-middle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;
两种方式的用户登录认证:
基于password
基于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 PATTERN
PARAMETER VALUE
基于密钥的认证:
(1) 在客户端生成密钥对儿
ssh -t rsa [-P ”] [-f “~/.ssh/id_rsa”]
例一:生成密钥对
[root@localhost ~]# ssh-keygen
(2) 把公钥传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [user@]machine
例一:传输公钥
[root@localhost ~]# ssh-copy-id root@192.168.21.137
(3) 测试
[root@localhost ~]# ssh root@192.168.21.137 Last login: Thu Jun 15 11:05:33 2017 from 192.168.21.137
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
例一:把etc/fstab文件复制到另外一台主机上
[root@localhost ~]# scp /etc/fstab root@192.168.21.137:/tmp/
常用选项:
-r: 递归复制;
-p: 保持原文件的属性信息;
-q: 静默模式
-P PORT: 指明remote host的监听的端口;
sftp命令:
sftp [user@]host
sftp> help
例一:以指定用户的生份运行
[root@localhost ~]# sftp root@192.168.21.141 Connected to 192.168.21.141. sftp>
服务器端:
sshd, 配置文件: /etc/ssh/sshd_config
常用参数:
Port 22022
ListenAddress ip
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 | xargs
8、使用基于密钥的认证;
9、禁止使用空密码;
10、禁止root用户直接登录;
11、限制ssh的访问频度和并发在线数;
12、做好日志,经常分析;
ssh协议的另一个实现:dropbear
(1) dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
dropbear -p [ip:]port -F -E
原创文章,作者:kang,如若转载,请注明出处:http://www.178linux.com/78334