telnet:远程登录协议
采用c/s架构,全程使用明文。
应用层协议,工作在tcp 23端口。
S:telnet服务器
C:telnet客户端
ssh:Secure Shell
应用层协议,工作在tpc 22端口。
通信过程及认证过程都是加密的,基于主机认证。
用户认证过程加密
数据传输过程加密
版本:
ssl v1
ssl v2
主机密钥hostkey:
非对称加密
secert key
public key
OpenSSH:是ssh免费开源的实现。
常见的ssh工具:
客户端:
linux:ssh
windowns:putty,SecureCRT,Xmanager...
服务器端:
linux:sshd
windows:暂无
配置文件:
服务器端:sshd
配置文件:/etc/ssh/sshd_config
使用man sshd_config可以查看配置文件的详情。
客户端:ssh
配置文件:/etc/ssh/ssh_config
#ssh [OPTION] [USERNAME@]HOST 'COMMAND'
[OPTION]
-l USERNAME HOST
-X 允许X11的转发。即允许使用图形模式下的相关命令。远程有没有x服务都可以,本地有就行了。
-Y 允许信任的X11的转发。
-p PORT 指定端口
从服务器端接受的主机密钥存放在USERNAME的家目录下的文件中:
/home/USERNAME/.ssh/kown_hosts
#ssh-keygen [OPTION] 密钥生成器
[OPTION]
-t TYPE 指定加密方式,常用的为rsa|dsa
-f KEYFILE 指定私钥文件。
-P 'PASSWORD' 指定旧的加密私钥的密码,''表示空密码。
-N 'PASSWORD' 指定新的密码。
-p 改变私钥文件的密码而不重建私钥。程序将提示输入私钥文件名、旧密码、两次输入新密码。
生成的密钥存放在:
/home/USERNAME/.ssh/id_rsa 生成的私钥
/home/USERNAME/.ssh/id_rsa.pub 生成的公钥
注意:.ssh文件夹的权限只能为700!
生成的公钥将保存到远程主机USERNAME的家目录下的相关文件中,只能追加,不能覆盖:
/home/USERNAME/.ssh/authorized_keys
或
/home/USERNAME/.ssh/authorized_keys2
文件的权限为600!
例如:
#ssh-keygen -t rsa -f /root/.ssh/id_rsa -N''
#ssh-copy-id [OPTION] [USERNAME@]HOST 将公钥传输至远程服务器
[OPTION]
-i PUBKEYFILE 指定公钥文件
例如:
#ssh-copy-id [email protected]
#ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
#scp [OPTION] SRC DEST 跨主机安全复制工具。
[OPTION]
-r 递归
-a 全部
SRC
USERNAME@HOST:DIR
FILEDIR
DEST
USERNAME@HOST:DIR
FILEDIR
例如:
#scp /root/busybox.tar.gz [email protected]:/home/hadoop/
#scp [email protected]:/home/hadoop/busybox.tar.gz /root/
基于密钥的认证实例(单向信任):
192.168.1.23为服务器,有用户名为hadoop。
192.168.1.22为客户端
1.在客户端上生成一对密钥,
#ssh-keygen -t rsa -f .ssh/id_rsa -N''
#ls -a .ssh/
id_rsa id_rsa.pub
2.将公钥传输至服务器端hadoop的家目录下,并将其追加到/home/hadoop/.ssh/authorized_key文件中
#scp /root/.ssh/id_rsa.pub [email protected]:/home/hadoop/rsa.pub.clinet
#ssh [email protected] 'cat home/hadoop/rsa.pub.clinet >> /home/hadoop/.ssh/authroized_keys'
或
#ssh-copy-id [email protected]
3.测试登陆
#ssh [email protected]
$
ssh日常使用注意要点:
1.密码应该经常更换并保持健壮性
2.使用非默认端口
3.限制登陆地址
4.禁止管理员直接登陆
5.仅允许有线用户登陆
6.使用基于密钥的认证
7.不要使用ssl v1
#netstat -tln 查看tcp协议中处于listening状态下的端口,并以数字显示而不是以协议名称。
dropbear:嵌入式系统专用的ssh服务器端和客户端工具
服务器端:dropbear
密钥生成工具:
dropbearkey
客户端:dbclient
dropbear默认使用nsswitch进行名称解析
nsswitch所需文件:
/etc/nsswitch.conf
/lib/libnss_file*
/usr/lib/libnss3.so
/usr/lib/libnss.file*
dropbear或在用户登录时检查其默认shell是否为当前系统的安全shell。安全shell在/etc/shells内进行定义。
主机密钥默认位置:
/etc/dropbear/
dorpbear_rsa_host_key
长度可变,是8的倍数即可,默认为1024
dorpbear_dss_host_key
长度固定,默认为1024
#dropbearkey [OPTION]
-t TYPE rsa|dsa
-f KEYFILE
-s SIZE