初探linux之open ssh

初探linux之open ssh

SHH的配置文件在/etc/ssh/sshd_config 用任何一种文本编辑工具可以对其修改 我还是习惯用vi,虽然老是抱怨不好用

[root@centos ~]# vi /etc/ssh/sshd_config     这儿就是就vi打开shh的配置文件,接下来就是有个比较常用的选项:

一、Protoco
l   这是设置使用shh协议的版本的,未修改前是#Protocol 2,1 一般只用第二版所以改成Protocol

2   注意前面那个注释符号#,加上#这条设置就不起作用。

二、ServerKeyBits 设置加密级别,数字越大越安全。一般为ServerKeyBits 1024

三、PermitRootLogin 设置是否允许root登录 后面跟yes 或者no 为了安全还是no吧。

四、PasswordAuthentication 设置是否使用密码登录 同样后面跟yes 或者no

五、PermitEmptyPasswords 设置是否使用空密码登录 后面跟yes 或者no  

一般来说比较常用的就这么几个,另外还有两个文件值得注意:/etc/hosts.deny 和/etc/hosts.allow 

hosts.deny 是屏蔽规则的配置文件 相反hosts.allow 是允许的规则的配置文件,如果你只允许部分ip通过shh登录的话,这两个文件就有用了。

首先是hosts.deny,用vi编辑它在里面加入 sshd: ALL。修改好后内容如下:
                    
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!

sshd: ALL

加入的内容的意思就是屏蔽所有的连接。

接下来的工作就是加如允许的ip段,不然全都屏蔽了那还有什么用?

编辑hosts.allow在里面加入 sshd: 后面跟允许的ip段。例如一个只配置好的hosts.allow如下:

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#

sshd: 192.168.0.

这样只要重启shh服务之后配置就能生效了,重启shh的方法:
[root@sample ~]# /etc/rc.d/init.d/sshd restart  ← 重新启动SSH服务器

Stopping sshd:             [ OK ]
Starting sshd:             [ OK ]  ← SSH服务器重新启动成功

另:如果你PasswordAuthentication 设置为no,这就说明你不使用密码登录而是使用密匙文件来验证登录,那这样就需要配置公钥与私钥。

要使用哪个用户来ssh登录就在哪个用户下来配置公钥与私钥。

具体命令为:ssh-keygen -t rsa 一个具体的例子如下:

[centospub@sample ~]$ ssh-keygen -t rsa  ← 建立公钥与私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kaz/.ssh/id_rsa):  ← 钥匙的文件名,保持默认可直接回车
Created directory '/home/kaz/.ssh'
Enter passphrase (empty for no passphrase):  ← 输入口令
Enter same passphrase again:   ← 再次输入口令
Your identification has been saved in /home/kaz/.ssh/id_rsa.
Your public key has been saved in /home/kaz/.ssh/id_rsa.pub.
The key fingerprint is:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e centospub@sample.centospub.com

注:绿色是需要输入的地方,蓝色为系统自动生成的,红色为你输入的内容

这用我们就生成了公钥与私钥,不过还没完还有几步。

必须把公钥内容输出到相应文件中,不然咱们就白费力气了,具体如下:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

然后chmod 400 ~/.ssh/authorized_keys 至于生成的那个公钥文件你自己看着办,删不删除都可以,为了安全还是删了好。下面是一个实例:

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

[centospub@sample .ssh]$ ls -l  ← 列出文件
total 16
-rw------- 1 centospub centospub 951 Sep 4 19:22 id_rsa  ← 确认私钥已被建立
-rw-r--r-- 1 centospub centospub 241 Sep 4 19:22 id_rsa.pub  ← 确认公钥已被建立

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

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

[centospub@sample .ssh]$ chmod 400 ~/.ssh/authorized_keys  ← 将新建立的公钥文件属性设置为400

然后,将私钥通过安全的方式转移到欲通过SSH连接到服务器的PC上就大工告成!
如果不将最后一步的chmod 400执行了,是不能用密钥登陆的。
另外,私钥id_rsa是一定要删的,公钥id_rsa.pub删不删没关系。