当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > CentOS下用OpenSSH构建SSH服务器

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

Linux服务器 中的 CentOS下用OpenSSH构建SSH服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 83 ::
收藏到网摘: n/a

前言


SSH服务和Telnet服务一样,通过远程登录登录到系统,在远程操控系统。但它与Telnet的不同点就是:Telnet在传输的过程中是平文传输,而SSH是将传输内容加密,在传送的过程中保证了传送内容的保密性,从而提高了系统的安全性。

在这里,我们不准备将SSH服务作为用户上传下载文件的工具。我们只用SSH服务的开通为远程管理系统提供方便。另外在用户认证方式上,为了服务器和用户的安全,禁止用户密码的认证方式,而基于“钥匙”的方式。
SSH相关配置文件的修改
  首先修改SSH的配置文件。如下:

[root@sample~]#vi/etc/ssh/sshd_config ←用vi打开SSH的配置文件

#Protocol2,1 ←找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接
 ↓
Protocol2 ←修改后变为此状态,仅使用SSH2

#ServerKeyBits768 ←找到这一行,将行首的“#”去掉,并将768改为1024
 ↓
ServerKeyBits1024 ←修改后变为此状态,将ServerKey强度改为1024比特

#PermitRootLoginyes ←找到这一行,将行首的“#”去掉,并将yes改为no
 ↓
PermitRootLoginno ←修改后变为此状态,不允许用root进行登录

#PasswordAuthenticationyes ←找到这一行,将yes改为no
 ↓
PasswordAuthenticationno ←修改后变为此状态,不允许密码方式的登录

#PermitEmptyPasswordsno ←找到此行将行头的“#”删除,不允许空密码登录
 ↓
PermitEmptyPasswordsno ←修改后变为此状态,禁止空密码进行登录
然后保存并退出。(vi保存退出的命令为ZZ)

因为我们只想让SSH服务为管理系统提供方便,所以在不通过外网远程管理系统的情况下,只允许内网客户端通过SSH登录到服务器,以最大限度减少不安全因素。设置方法如下:

[root@sample~]#vi/etc/hosts.deny ←修改屏蔽规则,在文尾添加相应行

#
#hosts.denyThisfiledescribesthenamesofthehostswhichare
#*not*allowedtousethelocalINETservices,asdecided
#bythe'/usr/sbin/tcpd'server.
#
#Theportmaplineisredundant,butitislefttoremindyouthat
#thenewsecureportmapuseshosts.denyandhosts.allow.Inparticular
#youshouldknowthatNFSusesportmap!

sshd:ALL ←添加这一行,屏蔽来自所有的SSH连接请求

[root@sample~]#vi/etc/hosts.allow ←修改允许规则,在文尾添加相应行

#
#hosts.allowThisfiledescribesthenamesofthehostswhichare
#allowedtousethelocalINETservices,asdecided
#bythe'/usr/sbin/tcpd'server.
#

sshd:192.168.0. ←添加这一行,只允许来自内网的SSH连接请求
重新启动SSH服务
  在修改完SSH的配置文件后,需要重新启动SSH服务才能使新的设置生效。

[root@sample~]#/etc/rc.d/init.d/sshdrestart ←重新启动SSH服务器

Stoppingsshd:[OK]
Startingsshd:[OK] ←SSH服务器重新启动成功
这时,在远程终端(自用PC等等)上,用SSH客户端软件以正常的密码的方式是无法登录服务器的。为了在客户能够登录到服务器,我们接下来建立SSH用的公钥与私钥,以用于客户端以“钥匙”的方式登录SSH服务器。

SSH2的公钥与私钥的建立
  登录为一个一般用户,基于这个用户建立公钥与私钥。(这里以centospub用户为例)

[root@sample~]#su-centospub ←登录为一般用户centospub

[centospub@sample~]$ssh-keygen-trsa ←建立公钥与私钥
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/kaz/.ssh/id_rsa): ←钥匙的文件名,这里保持默认直接回车
Createddirectory'/home/kaz/.ssh'
Enterpassphrase(emptyfornopassphrase): ←输入口令
Entersamepassphraseagain: ←再次输入口令
Youridentificationhasbeensavedin/home/kaz/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/kaz/.ssh/id_rsa.pub.
Thekeyfingerprintis:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:[email protected]
  然后确认一下公钥与密钥的建立,以及对应于客户端的一些处理。

[centospub@sample~]$cd~/.ssh ←进入用户SSH配置文件的目录

[[email protected]]$ls-l ←列出文件
total16
-rw-------1centospubcentospub951Sep419:22id_rsa ←确认私钥已被建立
-rw-r--r--1centospubcentospub241Sep419:22id_rsa.pub ←确认公钥已被建立

[[email protected]]$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys ←公钥内容输出到相应文件中

[[email protected]]$rm-f~/.ssh/id_rsa.pub ←删除原来的公钥文件

[[email protected]]$chmod400~/.ssh/authorized_keys ←将新建立的公钥文件属性设置为400
  然后,将私钥通过安全的方式转移到欲通过SSH连接到服务器的PC上。这里,以通过3.5寸磁盘为介质为例:

[email protected]]$exit ←退出一般用户的登录(返回root的登录)

[root@sample~]#mount/mnt/floppy/ ←加载软盘驱动器

[root@sample~]#mv/home/centospub/.ssh/id_rsa/mnt/floppy/ ←将刚刚建立的私钥移动到软盘

[root@sample~]#umount/mnt/floppy/ ←卸载软盘驱动器
  这样,我们通过对应于centospub用户的私钥,就可以在远程终端上通过SSH客户端连接到服务器了。但服务器生成的私钥匙不能被客户端直接应用…详细请见下一节。