SSH远程管理
linux
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。SSH协议对通讯双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,与早期的telnet(远程管理),rsh(Remote Shell ,远程执行命令),rcp(远程复制文件)等应用相比,SSH协议提供了更好的安全性。算法
配置OpenSSH服务端数据库
在RHEL 5系统中,OpenSSH服务器由openssh,openssh-server等软件包提供(默认已安装),并已将sshd添加为标准的系统服务。执行"service sshd start"命令便可按默认配置启动sshd服务,包括root在内的大部分用户(只要拥有合法的登录Shell)均可以远程登录系统。windows
Sshd服务的配置文件默认位于/etc/ssh/sshd_config,正常调整相关配置项,能够进一步提升sshd远程登录的安全性。下面介绍最经常使用的一些配置项,关于sshd_config文件的更多配置可参考man手册页。安全
1. 服务监听选项服务器
Sshd服务使用的默认端口好为22,必要时建议修改此端口号,并指定监听服务的具体ip地址,以提升在网络中的隐蔽性,除此以外,SSH协议的版本选用V2比V1的安全性更好,禁用DNS反向解析能够提升服务器的响应速度。网络
修改配置文件后须要从新加载文件:service sshd reloadapp
服务器默认配置以下ssh
2.用户登录控制工具
Sshd服务默认容许root用户登录,当在linternet中使用时这是很是不安全的,更广泛的作法是,先以普通用户远程登入,进入安全Shell环境后,根据实际须要使用su命令切换为root用户。
关于sshd服务的用户登录控制,一般应禁止root用户或密码为空的用户登录,另外能够限制登陆验证的时间(默认为2分钟)和最大重试次数,若超过限制后仍未能登录则断开链接。
当但愿之容许或禁止某些用户登录时,可使用AllowUsers或DenyUsers配置,二者用法相似(注意不要同时使用)。例如:若只容许jerry和admin用户登录,而且admin用户仅可以从ip地址为61.23.24.25的主机远程登录,能够参考如下操做。
AllowUsers jerry admin@61.223.24.25 //多个用户以空格分隔
3. 登录验证方式
对于服务器的远程管理来讲,除了用户帐号的安全控制之外,登录验证的方式也很是重要,sshd服务支持两种验证方式——密码验证,密钥对验证。能够设置只使用其中以正方式,也能够两种方式都启用。
密码验证:以服务器中本地系统用户的登陆名称,密码进行验证。这种方式使用最为简便,但冲客户机角度来看正在链接的服务器有可能被冒充,从服务器角度看当遭遇密码穷举(暴力破解)攻击时防护能力比较弱。
密钥对验证:要求提供相匹配的密钥信息才能经过验证,一般先在客户机中建立一对密钥文件(公钥,私钥),而后将公钥文件放到服务器中的指定位置,远程登录时,系统将使用公钥,私钥进行加密/解密关联验证,大大加强了远程管理的安全性。
当加密验证,密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求比较高的服务器,建议将密码验证方式禁用,只容许密钥对验证方式;若没有特殊要求,则两种方式均可以启用。
Service sshd reload 一样须要从新加载配置文件便可生效。
5.1.2 使用SSH客户端程序
在RHEL 5系统中,OpenSSH客户端由openssh-cliente软件包提供(默认已安装),其中包括ssh远程登陆命令,以及scp,sftp远程复制和文件传输命令等,实际上,任何支持SSH协议的客户端程序均可以与OpenSSH服务器进行通讯,例如:windows平台中的PuttyCN,WinSCP,SecureCRT等图形工具。
注意:若是默认端口22被改成其它端口,使用时应以上选项指定端口号。
命令程序ssh ,scp ,sftp
1)ssh远程登录
经过ssh命令能够远程登陆到sshd服务,为用户提供一个安全的Shell环境,以便对服务器进行管理和维护。使用时应指定登录用户,目标主机地址做为参数。例如:若要登录主机192.168.4.254,以对方的tsergyia用户进行验证,能够执行如下操做。
Yes //接受密钥
123456 //输入用户密码
当用户第一次登陆SSH服务器时,必须接受服务器发来的RSA密钥(根据提示输入yes)后才能继续验证,接收的密钥信息将保存到~/.ssh/known_hosts文件中(保存在客户机中),密钥验证成功之后,就登录到目标服务器的命令环境中了,就比如把客户机的显示器,键盘链接到服务器上同样。
Whoami //确认当前用户
/sbin/ifconfig eth0 //确认是不是服务器ip地址
若是sshd服务器使用了非默认的端口号(如2345),则在登陆时必须经过"-p"(小写)选项指定端口号。例如:一下操做将访问主机192.168.4.22的2345端口,以对方为jerry用户验证登陆。
Ssh -p 2345 jerry@192.168.4.22
2)scp远程复制
经过scp命令能够利用SSH安全链接与远程主机相互复制文件,使用scp命令时,除了必须指定复制源,目标之外,还应指定目标主机地址,登陆用户,执行后提示验证口令便可。例如:如下操做分别演示了下行,上行复制的操做过程,将远程主机中的/etc/passwd文件复制到本机,并将本机的/etc/vsftpd/目录复制到远程主机。
下行:Scp root@192.168.4.254:/etc/passwd(源) /root/pwd254.txt(目的)
注意:目标主机用户root(要容许ssh登陆),(注意root用户要有读取权限)
上行:scp -r(目录) /etc/vsftpd/(源) root@192.168.4.254:/opt/(目的)
注意:用户仍是远程主机用户,要能有写入权限
3)sftp安全FTP
经过sftp命令能够利用SSH安全链接与远程主机上传,下载文件,采用了与FTP相似的登陆过程和交互式环境,便于目录资源管理。例如:如下操做依次演示了sftp登陆,浏览,文件上传等过程。
Sftp root@192.168.4.244 //登录
Ls //查看(远程主机)
!ls //查看(bending客户机)
Put(或mput) /boot/config-2.3.18-194.el5 //上传文件
Get(或mget) //下载文件
Bye //退出
图形工具PuttyCN,WinSCP
1)PuttyCN远程登录
Putty是一款瓶盖的Telnet/SSH图形客户端软件,可以在windows 32平台模拟xterm终端环境,主要做品为Simon Tatham,PuttyCN是对应的中文版。
使用PuttyCN时,只需运行主程序putty.exe,而后再窗口中指定远程主机的ip地址,端口号等相关信息,以下图所示,再单击"打开"按钮,根据提示接受密钥,验证密码后便可成功登陆到目标主机。
步骤一:输入目标服务器的ip地址,端口号链接类型,点击"打开"
步骤二:在弹出的窗口中单击"是",表示接受密钥
步骤三:输入远程服务器的用户名和密码,验证成功后便可登陆。
2)WinSCP远程复制
Winscp是一款用于widnows平台的SSH图形客户端软件,用来经过SCP,SFTP方式在本地与远程计算机之间安全的复制文件。WinSCP的官方网站位于http://winscp.net,建议下载.zip格式的免安装包。
使用WinSCP时,只须要运行主程序WinSCP.exe。而后在窗口中指定远程主机的ip地址,端口号等相关信息,以下图所示,再单击"登陆"按钮,根据提示接受密钥,验证密码后便可成功链接到目标主机,操做界面与常见的FTP客户软件相似。
因为PuttyCN,WinSCP都提供了中文界面,功能和操做比较简单,所以这里再也不对着两款软件作深刻研究。
5.1.3 构建密钥对验证的SSH体系
正如前面所说起的,密钥对验证方式能够为远程登陆提供更好的安全性,下面将学习在linux服务器,客户端中构建密钥对验证SSH体系的基本过程,如图所示。
在客户端建立密钥对
在linxu客户机中,经过ssh-keygen工具为当前用户建立密钥对文件,可用的加密算法为RSA或DSA("ssh-keygen"命令的"-t"选项用于指定算法类型)。例如:以zhangsan用户登陆到客户机,并生成基于RSA算法的SSH密钥对(公钥。私钥)文件,操做以下:
Ssh-keygen -t rsa
---------------------------------.//指定私钥位置
--------------------------------//设置私钥短语
-------------------------------//确认所设置的短语
上述操做过程当中,提示指定私钥文件的存放位置时,通常直接按Enter键便可,最后生成的私钥,公钥文件默认存放在宿主目录中的隐藏文件夹.ssh/下,私钥短语用来对私钥文件进行保护,当使用该私钥验证登陆时必须正确提供此处所设置的短语。尽管不设置私钥短语也是能够的(实际无口令登录),但从安全假赌考虑不建议这么作。
Ls -lh ~/.ssh/id_rsa* //确认生成的密钥文件
新生成密钥对文件中,id_rsa是私钥文件,权限默认为600,对于私钥文件必须妥善保管,不能泄露给他人,id_rsa.pub是公钥文件,用来提供给SSH服务器。
2.将公钥文件上传至服务器
将上一步的公钥文件发送给服务器,并部署到服务器端用户的公钥数据库中。上传公钥文件时能够选择FTP,samba,HTTP甚至发送E-mail等任何方式,例如:能够经过scp方式将文件上传至服务器的/tpm/目录中。
Scp ~/.ssh/id_rsa.pub root@192.168.4.254:/tmp/(用户可以登录ssh)
3.在服务器中导入公钥文本
在服务器中,目标用户(指用来远程登陆的帐号)的公钥数据库位于~/.ssh/目录,默认的文件名是authorized_keys。当得到客户机发送过来的公钥文件之后,能够经过重定向将公钥文本内容追加到目标用户的公钥数据库中。
权限更改:chown lisi:lisi .ssh/
Chmod 700 .ssh/
在公钥库authorized_keys文件中,最关键的内容是"ssh-rsa加密字串"部分,当导入非ssh-keygen工具建立的公钥文本时,应确保此部分信息完整。
因为sshd服务默认采用严格的权限测试模式,所以还须要注意公钥库文件authorized_keys的权限——要求是登陆的目标用户或root,同组或其余用户对该文件不能有写入权限,不然可能没法成功使用密钥对验证
除此以外,应该确认sshd服务支持密钥对验证方式,具体参考上述登陆验证方式设置。
还有一种方法:
在客户机操做
端口必须为22,操做完之后能够更改。
ssh-copy-id -I /root/.ssh/id_rsa.pub zhangsan@192.168.4.254
注释:意思是zhangsan用户也用lisi在客户机上生成的(公钥和私钥)登陆同一台服务器,可以使用此方式。
4.在客户端使用密钥对验证
当私钥文件(客户端),公钥文件(服务器)均部署到位之后,就能够在客户机中进行测试了,首先确认客户机中当前的用户为zhangsan,而后经过ssh命令以服务器端用户lisi的身份进行远程登陆,若是密钥对验证方式配置成功,则在客户端将会要求输入私钥短语,以便调用私钥文件进行匹配(若未设置私钥短语,则直接登入目标服务器)
使用密钥对验证的方式登陆时,不须要知道目标用户的密码,而是改成验证客户端用户的私钥短语并检查双方的私钥,公钥文件是否配对,安全性更好。
TCP Wrappers访问控制
TCP Wrappers机制的保护对象为各类网络服务程序,针对访问服务的客户机地址进行访问控制,对应的两个策略文件为/etc/hosts.allow,/ect/deny,分别用来设置容许和拒绝的策略。
策略的配置格式
两个策略文件的做用相反,但配置记录的格式相同,以下所示。服务程序列表,客户机地址列表之间以冒号分割,在每一个列表内的多个项之间以逗号分隔。
服务程序列表
ALL,表明全部的服务
单个服务程序。例如:"vsftpd"
多个服务程序组成的列表,例如"vsftpd , sshd"
客户机地址列表
All,表明任何客户机地址
Local,表明本地地址
单个ip地址,例如:"192.168.4.1"
网络地址,例如:192.168.4.0/255.255.255.0或192.168.4.
以"."开始的域名,例如".benet.com"匹配benet.com域中的全部主机
潜入通配符"?"号表明一个字符 *表明多个字符
访问控制的基本原则
关于TCP Wrappers机制的访问策略,应用时遵循如下顺序和原则
首先检查/etc/hosts.allow文件,若是找到匹配的策略,则容许访问。
不然则继续检查/etc/hosts.deny文件,若是找到相匹配的策略,则拒绝
若是检查上述两个文件都找不到相匹配的策略,则容许。
若是连个文件中都匹配,hosts.allow生效
TCP Wrappers 配置实例
例如:若只但愿从ip地址为61.23.24.25的主机或者位于192.168.2.0/24网段的主机访问sshd服务,其余全部地址将被拒绝,能够执行如下操做。
Vim /etc/hosts.allow
Sshd:61.23.24.25,192.168.2.*
Vim /etc/hosts.deny
Sshd:ALL
补充:在windows 7系统中安装PuttyCN客户端,并使用密钥对验证的方式登陆远程的SSH服务器(密钥转换)
步骤一:使用winscp工具将私钥复制到win 7上
步骤二:使用puttygen工具转换私钥——load——在文档中*.*——save private key
步骤三:putty登陆——在左侧ssh中——auth——选择私钥文件——open
步骤四:输入用户名登陆