一、SSH简介
二、ssh的客户端程序
三、sshd服务端配置
四、dropbear介绍
一、SSH简介
Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
SSH 通常用于远程访问和执行命令,但是它也支持隧道,转发任意 TCP 端口以及 X11 连接;它还能够用 SFTP 或 SCP 协议来传输文件。
OpenSSH:
telnet:C/S架构 23/tcp
明文:认证等均为非加密 //任何人都可以监听
Linux:禁止管理员直接登录,默认
ssh:C/S架构22/tcp,安全地远程登录
协议:
ssh v1:废弃,man-in-middel中间人攻击,不能避免
ssh v2
持久链接:不会自动断开,除非空闲超时,或者client主动断开
公钥:放在server 。默认/root/.ssh/authorized_keys文件中追加
私钥:建立链接的时候,加密一段随机数据,用于实现身份认证
第一次:建立链接,放在已知列表中,成为可信主机 ,client的~/.ssh/known_hosts
数据交换:基于DH算法或者其他密钥分发算法,实现密钥分发
使用对称密钥加密传输
定时更换对称密钥,避免对称密钥被破解
密码通过:预共享密钥实现加密 //不安全
主机认证:需要用到主机认证密钥,由服务器端维护提供
ssh支持两种认证:
1.基于口令的认证://密码
2.密钥认证//
用户提供一对儿密钥,私钥留存于用户端,公钥放在服务器上
ssh:是一种协议
OpenSSH:ssh协议的开源实现
sshd:ssh daemon /etc/ssh/sshd_config
ssh:ssh cli /etc/ssh/ssh_config
scp,sftp
二、ssh的客户端程序
ssh客户端程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
ssh
[option] [[user@]host] [COMMAND]
ssh
[options] -l user host [
command
]
省略主机名:使用本地用户名,作为远程登录的用户名
-l login-name
-p port,远程服务器的端口
-o options链接选项
//
使用-o覆盖指定配置文件中的定义
-X :支持x11转发
-Y:支持受信任的x11转发
-b :指定要使用的本地地址作为链接
//
假如s有acl,client可能有多个地址
-i identity_file:
//
密钥对,可能有多个,指定本地密钥
默认:~/.
ssh
/id_rsa
,~/.
ssh
/id_dsa
,~/.
ssh
/id_ecdsa
//
私钥
配置文件:
/etc/ssh/ssh_config
,~/.
ssh
/config
Host 192.168.4.1
|
SSH支持的认证方式:
基于口令认证:
基于密钥认证:
1.生成一个密钥对儿 ssh-keygen [-b bit] [-t type] //私钥可以不加密,也可以加密
2.ssh-copy-id
3.别名~/.ssh/config
host mt 192.168.4.109 22
vim /etc/hosts
192.168.4.109 mt //能够解析
windows客户端:secret,xmanager(xshell),ssh,secureCRT,putty
ssh-keygen
1
2
3
4
|
-b bits
//
默认2048bits
-t
type
//dsa
密钥长度固定为1024bits,rsa,ecdsa 256
/384/512
,默认rsa
-f 指定输出保存位置,默认~/.
ssh
/
-N 指定私钥加密密码
|
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''//加密密钥为空
id_dsa的权限必须是600
ssh-copy-id [-i 公钥] user@host
-i 指定公钥
复制本地的id_rsa.pub的内容到server的~/.ssh/authorized_keys中
ssh-copy-id root@192.168.4.100 //可以不使用-i也可以
//注:只对当前主机当前用户有效,其他用户需要独立添加记录
scp:secure cp,跨主机安全文件传输的工具
scp [option] SRC.... DEST/
scp [options] SRC DEST
存在两种方式:
PUSH:scp [option] /paht/to/from/somefile ... [user@]hostname://path/to/somewhere
PULL:scp [option] [user@]hostname:/path/to/somefile... /path/to/somefile
从本地复制到远程,从远程复制到本地
-r:递归复制
-p:保存源文件的权限及从属关系
-q:静默模式 //可能会覆盖目标文件,建议慎用
-p port:端口
sftp:Openssh的一个子系统:sftp //远程登录目标主机,获取多个文件
sftp root@192.168.4.109 [-p port]
help //查看帮助
lpwd
lls //l开头的,都是本地命令,其他的都是远程主机上的
ftp:file transfer protocol,明文
安全传输机制:
ftps:ftp over ssl
sftp:ftp over ssh
sftp:
C/S
S:由sshd服务进程实现,是ss的一个子系统,在CentOS上默认启用
C:sftp命令
三、sshd服务端配置
配置文件:/etc/ssh/sshd_config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#Port 22 //强烈建议,不要使用默认端口
#AddressFamily any
#ListenAddress 0.0.0.0 //服务器可以监听多个地址,一个公网,一个私网,建议做vpn
#ListenAddress ::
#Protocol 2
HostKey
/etc/ssh/ssh_host_rsa_key
//
主机密钥所在
++++++++
#KeyRegenerationInterval 1h //每隔1h生成一次密钥,加密数据使用的对称密钥
SyslogFacility AUTHPRIV
//
日志记录,SyslogFacility:日志设施,AUTHPRIV:表示记录于
/var/log/secure
#LogLevel INFO //日志级别,大于等于该级别的都会被记录
#LoginGraceTime 2m 登录宽限期,等待client输入密码的时间
#PermitRootLogin yes 限制root用户远程登录
#AllowUsers user1 user2 ...;允许使用ssh服务的用户白名单
#AllowGroups grp1,grp2,
#DenyUsers user1 user2 ..;拒绝使用ssh
#当客户端连上服务器端后,若没有任何操作则,服务器端默认会,每隔一定时间发送一个alive消息给客户端寻求客户端应答,默认一共发三次.若都没有回应,则断开连其中
#ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接
#ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接,正常情况下,client不会不响应
#HostbasedAuthentication no #禁用基于主机的身份验证
#ChrootDirectory /home/%u #使用 Chroot SSHD 将 SFTP 用户局限于其自己的主目录
#Compression {yes|no|delayed} #指令压缩,#默认是delayed 意思就是等到用户认证结束后再对数据进行压缩
#StrictModes yes
#MaxAuthTries 6 尝试次数
#MaxSessions 10 最多保持会话
#RSAAuthentication yes 支持rsa的密钥认证
#PubkeyAuthentication yes 公钥认证
AuthorizedKeysFile .
ssh
/authorized_keys
//
认证文件
PasswordAuthentication
yes
//
支持口令认证
ChallengeResponseAuthentication no
//
不安全,建议关闭
PrintMotd
yes
#“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。
# Kerberos options //专用kerberous认证
UsePAM
yes
//
使用pam模块
X11Forwarding
yes
//
是否支持x11转发
关闭:
#UseDNS yes //反解用户名,建立ssh链接的时候,有时候很慢,及时由于他
|
手册:
man_sshd_config
man sshd
四、dropbear介绍
dropbear是一款基于ssh协议的轻量sshd服务器,与OpenSSH相比,他更简洁,更小巧,运行起来占用的内存也更少。每一个普通用户登录,OpenSSH会开两个sshd进程,而dropbear只开一个进程,所以其对硬件要求更低,也更利于系统的运行。Dropbear特别用于“嵌入”式的Linux(或其他Unix)系统
dropbear主要有以下程序:
服务程序:dropbear (类似于Openssh的 sshd)
客户程序:dbclient (类似于Openssh的 ssh)
密钥生成程序:dropbearkey
密码生成:
openssl rand -base64 16 //rand产生随机数,base64编码,16个字符
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
-dc:
head -c:字节数
yum install dropbear -y
rpm -ql dropbear
dropbearconvert //传送密钥
dropbearkey //生成密钥对
dropbear.service //服务
dropbear:服务端程序
-r 指定keyfile默认:/etc/dropbear/
-s 禁止使用密码登录
-g 禁止密码root使用密码登录
-p [addres:]port //默认会会监听所有接口的22/tcp
-P pidfile
-F 不要使用守护进程,工作在前台
-E 直接显示日志到终端
1.生成密钥
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -s 2048 -f /etc/dropbear/dropbear_rsa_host_key
dropbearkey -t ecdsa -s 384 -f /etc/dropbear/dropbear_ecdsa_host_key
dropbear -F -E -p 2222 //-E将日志发往标准错误输出,而非syslog,-F:让进程运行于前台,-p:指定端口
2.另一台机器:
ssh root@192.168.4.118 -p 2222
工作在后台:
vim /usr/lib/systemd/system/dropbear.service
[Service]
EnvironmentFile=-/etc/sysconfig/dropbear //环境配置文件
ExecStart=/usr/sbin/dropbear -E -F $OPTIONS //-F将会工作在前台,-E日志输出到前台,其他选项通过OPTIONS变量声明
vim /etc/sysconfig/dropbear
OPTIONS="-p 2222"
systemctl start dropbear
OPTIONS:查看dropbear -h 即可
客户端:dbclient
dbclient [options] [user@]host[/port][,[user@]host/port],...] [command]
本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/2061317,如需转载请自行联系原作者