ssh配置文件详解


配置“/etc/ssh/sshd_config”文件

     “/etc/ssh/sshd_config”是OpenSSH的配置文件,容许设置选项改变这个daemon的运行。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词,用man命令查看帮助页(sshd (8))能够获得详细的列表。

      编辑“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改变下面的参数:

# This is ssh server systemwide configuration file.
Port 22
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
ServerKeyBits 1024
LoginGraceTime 600shell

ClientAliveInterval 300
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers admin安全

     下面逐行说明上面的选项设置:

Port 22
“Port”设置sshd监听的端口号。

ListenAddress 192.168.1.1
“ListenAddress”设置sshd服务器绑定的IP地址。

HostKey /etc/ssh/ssh_host_key

“HostKey”设置包含计算机私人密匙的文件。

ServerKeyBits 1024
“ServerKeyBits”定义服务器密匙的位数。

LoginGraceTime 600
“LoginGraceTime”设置若是用户不能成功登陆,在切断链接以前服务器须要等待的时间(以秒为单位)。服务器


ClientAliveInterval 300(默认为0)
这个参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持链接


KeyRegenerationInterval 3600
“KeyRegenerationInterval”设置在多少秒以后自动从新生成服务器的密匙(若是使用密匙)。从新生成密匙是为了防止用盗用的密匙解密被截获的信息。

PermitRootLogin no
“PermitRootLogin”设置root能不能用ssh登陆。这个选项必定不要设成“yes”。

IgnoreRhosts yes
“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”

StrictModes yes
“StrictModes”设置ssh在接收登陆请求以前是否检查用户家目录和rhosts文件的权限和全部权。这一般是必要的,由于新手常常会把本身的目录和文件设成任何人都有写权限。

X11Forwarding no
“X11Forwarding”设置是否容许X11转发。

PrintMotd yes
“PrintMotd”设置sshd是否在用户登陆的时候显示“/etc/motd”中的信息。

SyslogFacility AUTH
“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。

LogLevel INFO
“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。

RhostsAuthentication no
“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。

RhostsRSAAuthentication no
“RhostsRSA”设置是否容许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。

RSAAuthentication yes
“RSAAuthentication”设置是否容许只有RSA安全验证。

PasswordAuthentication yes
“PasswordAuthentication”设置是否容许口令验证。

PermitEmptyPasswords no
“PermitEmptyPasswords”设置是否容许用口令为空的账号登陆。

AllowUsers admin
        “AllowUsers”的后面能够跟着任意的数量的用户名的匹配串(patterns)或
user@host这样的匹配串,这些字符串用空格隔开。主机名能够是DNS名或IP地址。网络

使用SFTP代替FTP传输文件
     FTP(文件传输协议)是一种使用很是普遍的在网络中传输文件的方式,可是,它也一样存在被网络窃听的危险,由于它也是以明文传送用户认证信息。其实在SSH软件包中,已经包含了一个叫做SFTP(Secure FTP)的安全文件传输子系统,SFTP自己没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的链接操做,因此从某种意义上来讲,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP一样是使用加密传输认证信息和传输的数据,因此,使用SFTP是很是安全的。可是,因为这种传输方式使用了加密/解密技术,因此传输效率比普通的FTP要低得多,若是您对网络安全性要求更高时,可使用SFTP代替FTP。若要开启 SFTP功能能够修改sshd2_config文件的下列内容:
        # subsystem-sftp sftp-server
       去掉行首的“#”,而后从新启动SSH服务器,这样在进行SSH链接时就能够同时使用SFTP传输文件。
ssh

       关于客户端设置
        以上是对服务器的设置,其实在SSH服务器中已经包含了一些客户端工具(如SSH,SFTP工具)。可是,更多的客户端用户使用Windows系统,下面就对Windows上的客户端系统设置加以说明。
       首先从上文给出的网址下载“SSHSecureShellClient-3.2.3.exe”文件并安装。安装完成后,在桌面上会产成两个快捷方式,一个是“SSH Secure Shell Client”,用于远程管理,另外一个是“SSH Secure File Transfer Client”,用于和服务器进行文件传输。在工具栏中点击“quick connnect”,输入正确的主机名和用户名,而后在弹出的对话框中输入密码完成登陆,便可开始执行命令或者传输文件。在使用SFTP时,默认只能显示用户的宿主目录的内容和非隐藏文件。可是,有时候您可能还要查看其它目录或者隐藏文件,这时只须要在菜单“eidt->setting-> file transfer”的选项中选中“show root directory”和“show hidden file”两个选项便可。

         使普通用户仅使用SFTP而没有使用Shell的权限
默认状况下管理员给系统添加的帐号将同时具备SFTP和SSH的权限。让普通用户使用shell执行命令也是有很大的安全隐患的,若是可以禁止用户使用shell执行命令而仅使用SFTP传输文件,就能消除这种安全隐患,彻底实现FTP的功能,
正如上文所述,SFTP没有单独的守护进程,只能借助于sshd守护进程,因此咱们仍然须要使用SSH服务器,要保证sshd守护进程处于运行状态。具体实现方法以下:
首先,在编译安装时,编译中必定要有“--enable-static” 选项。安装成功后,在安装目录下的bin目录中执行下面的命令:
[root@localhost bin]# ls -l ssh-dummy-shell* sftp-server2*
       将看到下列输出内容:
-rwxr-xr-x 1 root root 1350417 Apr 28 16:30 sftp-server2
-rwxr-xr-x 1 root root 3566890 Apr 28 16:30 sftp-server2.static
-rwxr-xr-x 1 root root 72388 Apr 28 16:30 ssh-dummy-shell
-rwxr-xr-x 1 root root 1813412 Apr 28 16:30 ssh-dummy-shell.static
       其中带“static”后缀名,且比较大的两个文件就是加上“--enable-static”选项后生成的,后面咱们将用到这里两个文件。
       下面以添加普通帐号test为例讲述具体操做步骤。
      1.在“/home”目录(或者将要存放普通用户宿主目录的目录)下建立“bin”子目录,并将两个static文件复制到此目录下(复制后更名去掉static后缀),执行以下命令:
[root@localhost bin]# cd /usr/local/ssh3.2/bin
[root@localhost bin]#cp ssh-dummy-shell.static /home/bin/ssh-dummy-shell
[root@localhost bin]# cp sftp-server2.static /home/bin/sftp-server
[root@localhost bin]#chown -R root.root /home/bin
[root@localhost bin]#chmod -R 755 /home/bin
       2.添加一个组,使之后全部禁止使用shell的用户都属于这个组,这样便于管理更多的用户:
[root@localhost bin]#groupadd template
      3.在添加系统帐号时使用以下命令:
[root@localhost root]#useradd -s /bin/ssh-dummy-shell -g template test
[root@localhost root]#passwd test
[root@localhost root]#mkdir /home/test/bin
[root@localhost root]#cd /home/test/bin
[root@localhost bin]#ln /home/bin/ssh-dummy-shell ssh-dummy-shell
[root@localhost bin]#ln /home/bin/sftp-server sftp-server
[root@localhost bin]#chown -R root.root /home/test/bin
[root@localhost bin]#chmod -R 755 /home/test/bin
     4.用户添加成功后,还须要修改/etc/ssh2/sshd2_config文件,将下列内容:
#ChRootGroups sftp,guest
改成:
ChRootGroups sftp,guest,template
       修改上面这行内容,主要是为了禁止普通用户查看系统的其它目录,把其权限限制在本身的主目录下。从新启动SSH服务器程序,在客户端使用SSH Secure File Transfer Client登陆,即便选择显示根目录,普通用户也看不到其它的任何目录,而是把本身的主目录看成根目录。注意,这里使用的是按用户所属组限制,这样可使包含在template组内的全部用户均可以实现此功能。若您只要限制个别用户的话,能够修改下面的内容:
#ChRootUsers anonymous,ftp,guest

      事实证实SSH是一种很是好的网络安全解决方案,可是,目前仍有不少管理员使用Telnet或FTP这种很是不安全的工具,但愿尽快转移到SSH上来,以减小网络安全隐患。
ide

相关文章
相关标签/搜索