参考网址:http://www.cnblogs.com/programfish/p/4098091.html
SSH简介
ssh全称:secure shell
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
ssh 层次结构
- 传输层协议【SSH-TRANS】
提供服务器认证,数据机密性,信息完整性 等的支持 - 用户认证协议【SSH-AUTH】
为服务器提供客户端的身份鉴别 - 连接协议【SSH-CONN】
将加密的信息隧道复用成若干个逻辑通道
相关工具
- sftp 使用了加密传输方式的远程传输工具,使用命令与ftp基本一样,这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低,适合网络安全性要求更高的情况使用。
- scp 非交互式sftp-server的客户端,用来向服务器上传/下载文件
- sshfs 远程目录挂载工具,非常方便实用,使用方法参见http://www.programfish.com/blog/?p=145
ssh认证方式
- password (基于口令的安全认证)
1.指定ip连接
ssh 192.168.1.1
2.指定主机名连接
ssh hostname(www.baidu.com)
3.指定登陆用户名连接
ssh lzy@192.168.1.1
注:第一次连接时会出现提示,ssh会提示你是否要信 任这个主机,这里需要你键入yes回车,选择了信任这台主机后ssh会把这台主机上的公钥(public key)记录在~/.ssh/known_hosts这个文件下(.ssh是你家目录下的一个隐藏目录)。
密匙不对导致的连接错误可手动删除known_hosts里面相应内容或者全部内容解决此问题。
4.使用别名认证
在~/.ssh下的config文件(没有则创建)里加入如下格式的内容:
Host cg
HostName 172.17.0.3
User lfly
这样的话我就把上面我的远程主机设置了一个别名为cg 。
下次就可以这样连接到该主机:
lfly@linux-oj9e:~> ssh cg
上面的命令等价于: lfly@linux-oj9e:~> ssh lfly@172.17.0.3
如果要设置多个远程主机的别名,则添加多个以上的三行为一组的内容进config文件即可。
- public key(基于密匙的安全认证)
过程:
先在本地创建一对密钥(公钥和私钥),并把公匙放在需要访问的服务器上;
1.客户端向远程服务器发出请求用你的公钥认证;
2.服务器收到请求之后,在本地找出你的公钥,然后把它和你发送过来的公钥进行比较。若两密匙一致,服务器就用公匙加密“质询”(challenge)并把它发送给客户端软件;
3.客户端软件收到“质询”之后就可以用私钥解密后再把它发送给服务器。
4.这种方式不需要在网络上传送口令,但你要记住密钥的口令(在创建密钥时会要求设置)。public key认证可以有效避免“中间人”攻击。
公匙加密算法:rsa和dsa
上传公匙方法:
1.scp
需设置.ssh(700)目录权限和authorized_keys(644)权限
lfly@linux-oj9e:~/.ssh>scp id_rsa.pub lfly@172.17.0.3:~/.ssh/authorized_keys
2.ssh-copy-id
lfly@linux-oj9e:~/.ssh> ssh-copy-id -i ~/.ssh/id_rsa.pub lfly@192.168.56.101
此方法权限自动设置
- Hostbased 验证