快捷搜索:   nginx

CentOS 服务器配置系列--SSH服务器

实验环境:
:CentOS-5.1(192.168.1.87)
客户机:FC6(192.168.1.86) Windows XP(192.168.1.88)

实验名:SSH服务器

一.SSH服务器简介

先简单的介绍下SSH服务器吧!SSH即Security SHell的意思,他可以将连线的封包进行加密技术,之后进行传输,因此相当的安全。
SSH最开始是UNIX下的一个应用程序,后来又迅速扩展到其他操作平台,SSH客户端适用于多种平台,几乎所有的UNIX平台及类UNIX平台都可以

运行SSH,还有一些客户端也可以运行在UNIX平台以外,包括OS/2,VMS,BeOS,Java,Windows的一些平台。

SSH协定,在预设的状态下,本身就提供了两个服务器功能:
1.一个就是类似telnet的远程连接使用shell的服务器,也就是俗称的SSH
2.另一个就是类似FTP服务的sftp-server,它提供更安全的FTP服务

二.SSH服务器工作原理

接下来我们先看下它的安全加密技术是如何实现的?
数据加密的技术通常是由“公钥私钥”即Public and Privite keys,来进行加密与解密的操作!而公钥与私钥又有什么用呢?在网络上为了安

全、可靠的传输、会话,我们通常会对传输的数据进行加密以防止别人的截取,而公钥和私钥通常的两个用处是:数据加密与身份验证,其属

于不对称加密,而在这两个功能中,公私钥所起的作用不是一样的。下面我分别就两种方式进行一下解释:
数据加密:公钥加密,私钥解密
公钥加密使用一个必需对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥在数学上相关联,用公钥加密的数据只能用

私钥解密,用私钥签名的数据只能用公钥验证。所以,别人在传输数据用公钥进行加密,即使被别人截取了,没有私钥,他也不能很轻易的看

到传输内容,要破解要的发上一定的时间。
身份验证:私钥加密,公钥解密
由上面介绍,每个人的公私钥不同,所以,通过私钥签名的数据用公钥进行一下验证就可以知道数据有没有被修改主。

说多了,再回到SSH协议中来,目前所用的SSH协议的版本是第2版,第2版中,当客户端(Client)连接到服务器端(Server)时,两者将由Diffie

-Hellman key密钥交换算法产生一个共享Key,之后将由类似Blowfish的演算方式进行同步解密的操作!关于上面的算法有兴趣可以上网找资料

,这里不多介绍。

三.SSH应用

1.启动SSH服务
CentOS中预设就已经含有SSH所有需要的套件了!这包含可以产生密码等协议的OpenSSL套件和OpenSSH套件,基本上所有Linux系统都有。因此

启动SSH非常的简单,直接启动SSH daemon,简称sshd来启动:
[root@linuxchao ~]# /etc/rc.d/init.d/sshd start
或[root@linuxchao ~]#service sshd start

如开始所说,SSH protocal给我们提供了一个安全的shell,而且让ssh有一个较为安全的FTP server即ssh-ftp server!

2.连接SSH服务器
这里由于实验环境是两种系统,所以都说一下:
windows用putty(最新版为beta 0.60)英文版官方下载页面为:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
建议下载它的安装包,里面有putty的所有相关程序,除了PuTTYtel:
A Windows installer for everything except PuTTYtel
Installer: putty-0.60-installer.exe (or by FTP) (RSA sig) (DSA sig)

我的设置如下图:

Linux下的就直接用ssh命令与sftp命令即可
下面说明两个命令的简单使用:
[root@linuxchao ~]#ssh 192.168.1.87 #连接服务器,之后会让你输入用户名与密码
[root@linuxchao ~]#ssh user@192.168.1.87 #用user用户登陆服务器,之后让你输入密码
[root@linuxchao ~]#sftp 192.168.1.87 #连接服务器,之后会让你输入用户名与密码
[root@linuxchao ~]#sftp user@192.168.1.87 #用user用户登陆服务器,之后让你输入密码

在进入sftp之后,就和一般的ftp模式下的操作方法相似了。下面是一些常用sftp指令
针对服务器(Server)的操作:
切换目录 cd PATH
列出目录内容 ls或dir
建立目录 mkdir directory
删除目录 rmdir directory
显示目前所在的目录 pwd
更改或目录群组 chgrp groupname PATH
更改文件或目录的所有者 chowe username PATH
更改文件或目录的权限 chmod nnn PATH
建立连接 ln oldname newname
删除文件或目录 rm PATH
更改文件或目录名称 rename oldname newname
退出服务器 exit或bye

针对客户机(Client)的操作(都加上l)
变换目录到本的PATH中 lcd PATH
列出目前本机所在目录的内容 lls
在本机建立目录 lmkdir
显示目前所在的梧桐目录 lpwd

文件传输操作
将文件由本机上传到服务器上 put [本机文件或目录] [服务器目录]
将文件由服务器下载到本机上 get [服务器文件或目录] [本机目录]

3.详细配置ssh服务器
这里不多说,它的配置文件是/etc/ssh/sshd_config,基本上,在你的系统中没有特殊的需要就不要修改它的默认设定值,因为默认的设定都是

最严密的SSH保护了。
如果修改之后,要重启下sshd /etc/rc.d/init.d/sshd restart

四、制作不用密码可立即登陆服务器的ssh用户

目标:让客户端linuxchao以服务器端centos1身份登陆

服务器上修改配置/etc/ssh/sshd_config
PubkeyAuthentication yes \去掉注释

Linux下实现自动登录
----------------------------------------------------------------
1.首先在客户端(Client)上建立Public key和Private key,使用ssh-keygen命令。以下为我机子演示:
[linuxchao@linuxchao ~]#ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/linuxchao/.ssh/id_rsa):
Created directory '/home/linuxchao/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/linuxchao/.ssh/id_rsa. #这是私钥及保存位置
Your public key has been saved in /home/linuxchao/.ssh/id_rsa.pub. #这是公钥及保存位置
The key fingerprint is:
64:4c:03:4a:ff:fc:e9:9b:0f:fd:f8:8e:79:5f:4f:63 linuxchao@linuxchao.org

2.然后,将Private key放在Client上的主目录,即$HOME/.ssh/,并且修改权限为仅有user可读。
上面的密钥自动保存在/home/linuxchao/.ssh/下
[linuxchao@linuxchao .ssh]$ ll
total 12
-rw------- 1 linuxchao linuxchao 1675 Apr 9 20:41 id_rsa
-rw-r--r-- 1 linuxchao linuxchao 405 Apr 9 20:41 id_rsa.pub
-rw-r--r-- 1 linuxchao linuxchao 394 Apr 9 20:42 known_hosts

3.最后,将Public key放在任何一个你想登入的主机服务器(Server)中某个user的主目录下.ssh/自目录的认证文件(authorized_keys),即可

完成整个程序。
[linuxchao@linuxchao .ssh]$ sftp centos1@192.168.1.87
Connecting to 192.168.1.87... #如果centos1不是服务器ssh用户,会提示认证提示
centos1@192.168.1.87's password:
sftp> put id_rsa.pub
Uploading id_rsa.pub to /home/centos1/id_rsa.pub
id_rsa.pub 100% 405 0.4KB/s 00:00
sftp> pwd
Remote working directory: /home/centos1
sftp> bye

到Servr上面,将公钥默契到authorized_key文件中!(如果文件不存在就新建一个。更改.ssh/authorized_keys权限为700)
[centos1@linuxchao ~]$cd ~/.ssh
[centos1@linuxchao ~]$cat ../id_rsa.pub >>authorized_keys

Windows下实现自动登录
------------------------------------------------------------------
1.生成密匙
openssh和putty的public key文件格式不太一样。它们都带有相关的工具来生成key。
使用putty的PUTTYGEN.EXE,运行后点击Genarate,在最上面的Public key for pasting into OpenSSH authorized_keys file:中生成public

key注意它没有换行。直接复制、粘贴到~/.ssh/authorized_keys文件中。如果文件不存在就新建一个。更改.ssh/authorized_keys权限为700。
然后保存private key,这和刚才的public key是对应的,这个最好加上密码,以免别人盗用。(在key passphrase和confirm passphrase中填

入密码)

2.设置Putty
如果pravite key没有设密码,可以在putty中直接指定key文件。在putty配置界面中的ssh->auth中的private key file for authentication

里指定。
如果有密码,使用PAGEANT.EXE做代理。运行PAGEANT.EXE点击add key,找到private key文件,会提示输入密码,如果正确就可以使用了。
putty 配置中 的Session中的 HostName中用 username@ip 的方式即可。打开putty,直接双击 Saved Sessions 中保存的帐户,就可以直接登

录了。
下面网址是官方使用手册:

--------------------------------------------------------------------
通过上面的操作就可以实现我们的目标了。
当你还想要登陆其他的主机时,只要将你的Public key(即id_rsa.pub)给他copy到其他主机上面去,并且新增到某个账号

的./ssh/authorized_keys这个文件中!

五、安全设定
下面再说几个安全设定的项目:
1./etc/ssh/sshd_config

禁止 root 的登入
[centos1@linuxchao ~]# vi /etc/ssh/sshd_config
PermitRootLogin no <==將他改成 no 就行了
[centos1@linuxchao ~] /etc/rc.d/init.d/sshd restart

不许某个群组登入
在 /etc/ssh/sshd-config 当中加入这一行:DenyGroups usergroup
重新啟動 sshd : /etc/rc.d/init.d/sshd restart

不许某个用户登入
在 /etc/ssh/sshd-config 当中加入这一行:DenyUsers user
重新啟動 sshd : /etc/rc.d/init.d/sshd restart

2./etc/hosts.all,/etc/hosts/deny
根据需要
3.iptables
根据需要

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论