ssh安装及配置详解

ssh(secure shell) --加密远程登录管理服务器,加密的数据传输
一、SSH为SecureShell的缩写,由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为建立在应用层传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平台,都可运行SSH。

telnet --通过字符界面远程管理服务器(明文)
ssh/openssh --加密的远程管理,加密的数据传输(scp/winscp/sftp)

client(192.168.0.254)ssh<--->server(192.168.0.172)sshd(密钥对(公钥/私钥))
1、可以使用ssh协议远程加密管理服务器
2、使用SSH协议进行数据传输(scp)
二、 从 客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)
需要依靠 密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器用这种方式,你必须知道自己密匙的口令。
但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒


dsa
rsa --ssh默认的加密方式,非对称的公钥加密算法,安全,数据传输速度慢
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

点击这里点击这里点击这里点击这里点击这里
保密级别对称密钥长度(bit)RSA密钥长度(bit)ECC密钥长度(bit)保密年限
808010241602010
11211220482242030
12812830722562040
19219276803842080
256256153605122120

# rpm -qa |grep ssh --默认情况下,LINUX发行版都预安装这个软件
openssh-server-4.3p2-36.el5 --服务端 sshd
openssh-askpass-4.3p2-36.el5 --图形的客户端
openssh-4.3p2-36.el5 --公共软件包
openssh-clients-4.3p2-36.el5 --字符的客户端ssh scp sftp


ssh远程登录的过程
1.sshd启动的时候会产生一个公钥,每个小时更新一次公钥
2.当客户端收到服务端公钥会版本协商(sshv1,sshv2)使用sshv1登录时不能登录ssh2 ,使用sshv2时可以登录ssh1,ssh2
3.版本协商完后,服务端会发公钥(/etc/ssh/ssh_host_ras.pub给客户端,这一步是没加密
4.客户端返回确认信息,把一个session_key通过公钥加密发给服务端
ssh的加密方式远程连接原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。



ssh的配置文件 :
# ls /etc/ssh/ssh*_config -l
-rw-r--r-- 1 root root 1827 2009-06-23 /etc/ssh/ssh_config 客户端的配置文件
-rw------- 1 root root 3323 2009-06-23 /etc/ssh/sshd_config 服务端的配置文件

# cat /etc/ssh/sshd_config |grep -v '#'|grep -v ^$
Port 22 --监听端口
Protocol 2 --使用版本2
ListenAddress 0.0.0.0 --监听地址
LoginGraceTime 2m --登录超时时间
PermitRootLogin yes --允许root通过ssh登录
MaxAuthTries 6 --密码尝试6次
RSAAuthentication yes --支持ras加密
PubkeyAuthentication yes --是否支持密钥对验证
AuthorizedKeysFile .ssh/authorized_keys --服务端更新密钥对密钥对验证时,客服端公钥存储文件

PermitEmptyPasswords no --是否允许空密码登录
PasswordAuthentication yes --是否支持账号/密码登录方式
UseDNS no --禁用DNS反解
Subsystem sftp /usr/libexec/openssh/sftp-server --支持sftp
AllowUsers root 只允许root 可以远程
DenyUsers
AllowGroups

客户端的命令:
# rpm -ql openssh-clients-4.3p2-36.el5|grep bin
/usr/bin/scp --支持远程主机之间文件拷贝
scp -P 2222 /root/test.txt kiki@192.168.0.16:/tmp/test.txt
scp -P 2222 -r /root/ kiki@192.168.0.16:/tmp/test.txt
scp root@192.168.0.254:/etc/hosts /var/tmp --从0.254主机上下载一个文件
scp /etc/hosts root@192.168.0.254:/var/tmp --往0.254上传一个文件

/usr/bin/sftp --sftp的客户端
# /usr/bin/sftp -oport=2222 kiki@192.168.0.16



/usr/bin/ssh
# ssh -p 2222 kiki@192.168.0.16

/usr/bin/ssh-copy-id --拷贝公钥至远程主机对应的目录


ssh验证:
1.基于账号/密码的验证

服务端:私钥
客服端:公钥

2.基于密钥对的验证
服务端:公钥
客服端:私钥


client(192.168.0.254)<-->server(192.168.0.2)

a. 在客户端生成密钥对
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): --保存私钥的路径
Enter passphrase (empty for no passphrase): --给私钥加密(123456)
Enter same passphrase again: --确认密码
Your identification has been saved in /root/.ssh/id_rsa. --私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. --公钥
ccess control configuration prevents your request from being

u01-→ u01/.ssh/authorized_keys
b. 拷贝公钥至服务器,拷贝目标路径:(你想用哪个用户登录就拷贝哪个用户的家目录$HOME/.ssh/authorized_keys)
第一种方法(手工拷贝):
在服务器上的操作:
#useradd kiki
# sudo -u kiki mkdir /home/kiki/.ssh
# sudo -u kiki chmod 700 /home/kiki/.ssh

在客户端上上传公钥
# scp -P2222 /root/.ssh/id_rsa.pub kiki@192.168.0.17:~/.ssh/authorized_keys

第二种方法(使用工具自动完成):
# ssh-copy-id -i /root/.ssh/id_rsa.pub kiki2@192.168.0.17 --一条命令搞定

c. 测试密钥对的登录:
# ssh -p2222kiki@192.168.0.17
Address 192.168.0.16 maps to test, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Enter passphrase for key '/root/.ssh/id_rsa': --输入私钥的加密密码(123456)
Last login: Fri Aug 19 15:47:02 2011 from 192.168.0.222
[kiki@mail ~]$ --这样就不需要输入kiki用户的密码

d.在windows的客户端使用密钥对验证:
1、生成密钥对
2、上传
3、转换:
# ssh-keygen -i -f key_pub >> /root/.ssh/authorized_keys


sshd 访问次数限制

编译PAM的配置文件(tty终端)
# vim /etc/pam.d/login



    #%PAM-1.0 
    auth      required  pam_tally2.so   deny=3  lock_time=300 even_deny_root root_unlock_time=10 

auth [user_unknown=ignore success=ok ignoreignore=ignore default=bad] pam_securetty.so一定要写在第一行。或者是最前面

even_deny_root    也限制root用户; 
 
deny           设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户 
 
unlock_time        设定普通用户锁定后,多少时间后解锁,单位是秒; 
 
root_unlock_time      设定root用户锁定后,多少时间后解锁,单位是秒;

如果想限制远程登录,需要改SSHD文件(远程登录)
# vim /etc/pam.d/sshd

#%PAM-1.0 
• auth          required        pam_tally2.so        deny=3  unlock_time=300 even_deny_root root_unlock_time=10

ssh用户登录失败次数过多被锁定,手动解锁:
• 查看用户登录失败的次数
• 1. [root@node100 pam.d]# pam_tally2 --user redhat 
2. Login           Failures Latest failure     From 
3. redhat              7    07/16/12 15:18:22  tty1 


确定用/lib64/security/pam_tally2.so模块
pam_tally2 --user kiosk ----查看登录失败次数
pam_tally2 -r -u kiosk ----登录次数为0即可登录

pam_tally -user kiosk -reset ----清空登录值
或:


faillog -u kiosk -r ----清空指定用户kiosk登录次数
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值