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) 保密年限
80 80 1024 160 2010
112 112 2048 224 2030
128 128 3072 256 2040
192 192 7680 384 2080
256 256 15360 512 2120

# 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 [email protected]:/tmp/test.txt
scp -P 2222 -r /root/ [email protected]:/tmp/test.txt
scp [email protected]:/etc/hosts /var/tmp --从0.254主机上下载一个文件
scp /etc/hosts [email protected]:/var/tmp --往0.254上传一个文件

/usr/bin/sftp --sftp的客户端
# /usr/bin/sftp -oport=2222 [email protected]



/usr/bin/ssh
# ssh -p 2222 [email protected]

/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 [email protected]:~/.ssh/authorized_keys

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

c. 测试密钥对的登录:
# ssh [email protected]
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登录次数
 

你可能感兴趣的:(ssh安装及配置详解)