`

ma系列之-26-机器认证相关命令和ssh

 
阅读更多

 

 

 

0 背景:

 

早期的远程登录用telnet,都是明文的,不安全
telnet: 远程登录协议, 23/tcp
 C/S
 S:telnet服务器
 C:telnet客户端
 
ssh: Secure SHell, 应用层协议,基于TCP工作,工作在tcp的22号端口22/tcp 
 通信过程及认证过程是加密的,主机认证(主机之间有暗号 防止主机冒充)
 用户认证过程加密
 数据传输过程加密
 
服务端有私钥,客户端有服务器的公钥, 第一次互通的时候,客户端先接收到对方的公钥,如果客户端已经有,则不发。
比如在做多机器ssh的时候,提示你输入yes后,就会将对方的公钥拷贝到本机中,然后客户端在访问服务端的时候,会带着客户端数据带上服务端公钥发送到服务端,
客户端在收到公钥之后,会试图生成对称密码,并使用服务器端的公钥加密将此密码发送给服务器端,那么此加密的东西只有服务器端能解密,这个过程就叫做秘钥交换。
为了防止在秘钥交换中暴力破解,一般都是通过普通用户登录后 su root后在执行ssh到其他机器执行其他机器操作。


认证过程两种方式:
 基于口令认证
 基于密钥认证:


ssh有两个版本: 
ssh v1 给予口令认证
 不安全,能够被man-in-middle  攻击到,man-in-middle会截获客户端,服务端,分别冒充对方,然后传送假数据。
sshv2: 基于秘钥认证
 安全 在客户端生成一对秘钥,公钥和私钥,私钥客户端保留,公钥放在服务端家目录下,客户讲本机公钥加密的数据发送到服务端,然后服务端通过本机中的客户端私钥
解密,解密成功,则说明链接是成功的,否则说明两个机器无法ssh

 

 

1  openSSH

 

ssh协议是公开的,是一套规范。
实现:服务器端、客户端使用这套规范来实现通信,在linux中,ssh协议的实现通常是 openSSH

 

Linux: openSSH
 C/S
 服务器端:sshd, 配置文件/etc/ssh/sshd_config
 客户端:ssh, 配置文件/etc/ssh/ssh_config
 ssh-keygen: 密钥生成器,给予秘钥认证时使用
 ssh-copy-id: 将公钥传输至远程服务器,而且能保存到用户家目录下的特定文件中
 scp:跨主机安全复制工具
 
 客户端使用:
 ssh:  ssh chinadaas12 默认是用当前客户端登录用户来实现ssh登录
 ssh USERNAME@HOST     以指定用户来ssh登录服务端
 ssh -l USERNAME HOST  
 ssh USERNAME@HOST 'COMMAND'  以指定用户来登录远程主机并在远程主机中执行COMMAND命令
 
 scp: 
 scp SRC DEST
 -r
 -a
 scp USERNAME@HOST:/path/to/somefile  /path/to/local  去远程主机中将somefile拷贝到本地的local下
 scp /path/to/local  USERNAME@HOST:/path/to/somewhere 将本地local下文件拷贝到远程主机somewhere下
 
 ssh-keygen
 -t rsa  指定以rsa方式生成秘钥
 ~/.ssh/id_rsa 私钥
 ~/.ssh/id_rsa.pub 公钥
 -f /path/to/KEY_FILE 
 -P '': 指定加密私钥的密码
 
 
 客户端的公钥追加保存到远程主机某用户的家目录下的.ssh/authorized_keys文件或.ssh/authorized_keys2文件中,一定不要覆盖,防止将服务端保存的别的客户端文件覆盖掉
 	

 ssh-copy-id  这个命令并不是在所有主机下都有这个命令,能自动将客户端公钥文件拷贝到服务端对应目录中并追加保存。
 -i ~/.ssh/id_rsa.pub
 ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOST

 

 

2 dropbear

 

嵌入式系统(小系统)专用的ssh服务器端和客户端工具
 服务器端:dropbear
   dropbearkey
 客户端:dbclient
    
 dropbear默认使用nsswitch实现名称解析
 /etc/nsswitch.conf
 /lib/libnss_files*
 /usr/lib/libnss3.so
 /usr/lib/libnss_files*
 
 dropbear会在用户登录检查其默认shell是否当前系统的安全shell
 /etc/shells
 
 主机密钥默认位置:
 /etc/dropbear/
 RSA: dropbear_rsa_host_key
 长度可变, 只要是8的整数倍,默认为1024
 DSS: dropbear_dss_host_key
 长度固定,默认为1024
 dropbearkey
 -t rsa|dsa 
 -f /path/to/KEY_FILE
 -s SIZE

 

 

3 机器之间通讯认证相关的几个概念:

 

CA : 证书颁发机构  certificate authority 
ssl协议:是网景公司的
openssl:  开源的ssl

ssl: 是一个库,是一个功能,实现加密 secure socket layer(安全套接字层)
应用层(http,smtp,ftp层)在传输数据到TCP协议时,调用SSL功能,这么久能实现加密功能。
因此http+ssl = https 数据安全传输

公钥加密
RSA:  能加密 解密
DSA:  只能加密

加密解密需要算法实现,一个工具能在主机上给我们提供
算法的实现,在Linux中,常用的这个工具是openssl 或者 gpg

openssl: ssl的开源实现,几乎实现了市场所有加密算法
     libcrypto: 加密库
     libssl 基于身份认证,数据机密性 会话完整性 tls/ssl库
     openssl 多用途命令行工具
     #openssl version 

国际通用协议: TLS 传输层安全(transport layer security) 在SSL基础上的一个更通用协议	   


openssh: 将认证实现加密 将传输也实现加密  运行在linux/unix的开源实现
	ssh客户端:
		linux: 就是ssh命令
		window: putty(尽量不要使用这个 破解版有病毒)  SecureCRT  SSHSecureShellClient(自带远程文件传送工具) Xmanager 
		
    ssh服务端:
		sshd: 只能按照在服务器端,默认运行在后台
		
	ssh  sshd的配置文件所在目录: /etc/ssh
		ssh客户端配置文件:  ssh_config
		sshd服务端配置文件: sshd_config  比如 其内就配置了 #AuthorizedKeysFile     .ssh/authorized_keys默认是这个路径,如果要修改取消注释修改即可
		改变配置信息后需要重启,service sshd xxx
	  	
		通过ssh连接到主机后,会在本机中的.ssh/known_hosts内增加主机的公钥信息
		
		
	scp: 基于ssh的远程复制命令,

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics