SSH 系列教程


人来疯技术文档之SSH 普及系列 2005-01-07 人来疯论坛 Ssh 普及系列 作者:adminxu MSN:xu1701@hotmail.com http://www.d-1701.com 一、SSH 是什么? 一个名为 Tatu Yl?nen 的芬兰程序员开发了一种网络协议和服务软件,称为 SSH(Secure SHell 的缩写)。 通过使用 SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且 也能够防止 DNS 和 IP 欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 SSH 有很多功能,虽然许多人把 Secure Shell 仅当作 Telnet 的替代物,但你可以使用它来保护你的网络 连接的安全。你可以通过本地或远程系统上的 Secure Shell 转发其他网络通信,如 POP、X、PPP 和 FTP。 你还可以转发其他类型的网络通信,包括 CVS 和任意其他的 TCP 通信。另外,你可以使用带 TCP 包装的 Secure Shell,以加强连接的安全性。除此之外,Secure Shell 还有一些其他的方便的功能,可用于诸如 Oracle 之类的应用,也可以将它用于远程备份和像 SecurID 卡一样的附加认证。SSH 有两个版本,下文我们介绍 的都是版本 2 二、软件的选取 1、服务器端 Windows server 上安装的服务器端可以是: F-secure ssh server for win Ssh secure shell server for win Unix 类上安装的服务器端可以是: Openssh-server Ssh secure shell server for unix 2、客户端 Windows 上的客户端可以是: Ssh secure shell client F-secure ssh client Putty software Uinx 上的客户端可以是: Openssh Ssh secure shell for unix 由于 openssh 漏洞众多,升级频繁,所以 unix 下的 server 和 client 主要选 http://www.ssh.com 的 Ssh secure shell 来介绍;windows 下的 server 和 client 主要选 F-secure ssh 系列、Ssh secure shell client 以及 putty 来介绍,(Ssh secure shell server for win 是商业产品,不在选型范围之内) 三、Ssh 服务器/客户端安装及启动 1、UNIX 类的服务器及客户端安装 我们前面介绍过,现在的 Ssh server for unix 类的最新版本是 ssh-3.2.9-1,我建议大家用官方提供的 TAR 包,当然,如果你不熟悉编译过程,用 RPM 等安装方式也是可以的。如果用 RPM 安装,请先下载 ssh-3.2.9-1.i386.rpm , 大家可以到以下地址下载: http://ftp.ssh.com/priv/secureshell/329wks+srv-lt49ldrk/linux/ssh-3.2.9-1.i386.rpm 安装时请用 root 权限 # rpm –ivh ssh-3.2.9-1.i386.rpm 如果是升级安装那参数就用 –Uvh 人来疯技术文档之SSH 普及系列 2005-01-07 而 3.2.9-1 的 TAR 包大家可以到 http://downloads.planetmirror.com/pub/ssh/ssh-3.2.9.1.tar.gz 下载。安装时请使 用 root 权限: # tar xzvf ssh-3.2.9.1.tar.gz # cd ssh-3.2.9.1 # ./configure --enable-static(这里需要说明一下,--enable-static 参数是为了控制用户访问权限的,后面我们 会做介绍;如果你希望用 tcp_wrappers 来控制 SSH,那么在 configure 时需要加上选项“--with-libwrap”, 如 果编译时不能找到 libwrap.a,那么需要用“--with-libwrap=/path_to_libwrap.a/”告诉 SSH 关于 libwrap.a 的 位置) # make ; make install ; make clean 这样就结束了安装。客户端和服务端都同时被安装到了 UNIX 类服务器上。 (2)、Windows 类的服务器及客户端安装 i:在 windows server 上安装 F-secure ssh server 首先在网上取得 fsshd53b28.exe 文件,版本号是 5.3build28,这个就是 F-secure ssh server for win 的安装文件, 大家可以到 google 搜索一下,具体安装过程和普通 windows 软件没什么区别,就是下一步下一步,最后程 序会生成一个默认的主机密钥,然后就结束安装了。安装完后你的程序组里会有一个 F-secure SSH server, 里面有一个 Configuration,这个就是配置 windows server 服务端的程序。 ii:在你本地 windows 上安装 F-secure ssh client 首先在网上取得 F-secure SSH client 的安装文件,版本号是 5.4build56,然后一步步按提示安装即可,安装 完后,在桌面上会产成三个快捷方式,一个是 F-secure SSH client,用于远程管理服务器,另一个是 F-secure SSH Secure File Transfer Client,用于和服务器进行文件传输,最后一个是 F-secure SSH Authentication Agent, 用于管理加密的私钥。 iii:安装 SSHSecureShellClient 首先在 http://www.ssh.com 上取得 SSHSecureShellClient-3.2.9.exe 文件,然后一步步按提示安装即可,安装 完后,在桌面上会产成两个快捷方式,一个是“SSH Secure Shell Client”,用于远程管理服务器,另一个是 “SSH Secure File Transfer Client”,用于和服务器进行文件传输。 iv:安装 putty software 我们可以从 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下载到最新版本的 putty,现在 的安装文件包是 putty-0.56-installer.exe,然后一步步按提示安装,安装完成后你会在程序栏看见多了一个 putty,里面可执行文件是 Pageant,PSFTP,PuTTY,PuTTYgen 四个,其中 Pageant 用来管理加密私钥,PSFTP 和服务器进行文件传输,PuTTY 是远程管理服务器的主程序,PuTTYgen 是制作公私钥的程序。 为了描述清楚,我们规定 UNIX 类服务器上只安装 Ssh secure shell 产品,而 SSHSecureShellClient 和 Putty 是用来连接 UNIX 类服务器的;WIN SERVER 服务器上只安装 F-secure ssh server,而 F-secure ssh client 是用来连接 windows 服务器的。 2、简单配置 (1)、Ssh server 在 unix 类 服 务 器 上 无 论 你 是 用 RPM 或 TAR 包 安 装 的 ssh server , 它 的 配 置 文 件 都 在 /etc/ssh2/sshd2_config,安装完后一般不用配置它,但如果你的 22 端口在安装 ssh server 之前已经被 其他程序占用,那么你需要简单的配置一下这个文件,执行 vi /etc/ssh2/sshd2_config,找到第 27 行, Port 22 ,把 22 改成其他的端口然后再启动 ssh 服务就可以了。 在 win server 上,如果你的 22 端口被占用了,那么你能从 Configuration—>network 里来重新指定 (2)、Ssh Client 主要是在使用 SFTP 时,默认只能显示用户的宿主目录的内容和非隐藏文件。但有时候您可能还要查看其它 目录或者隐藏文件,这时只需要在菜单“eidt—>setting—>global settings—>file transfer”的选项 人来疯技术文档之SSH 普及系列 2005-01-07 中选中“show root directory”和“show hidden file”两个选项即可。 3、启动 (1)、启动服务器端 UNIX 类的 Ssh server 的默认启动文件是/usr/local/sbin/sshd2,而安装程序自动做了一个连接到这个 文件的名字为 sshd 的文件,我们只要在/usr/local/sbin/目录中执行 ./sshd & 就可以简单的启用 Ssh server,然后我们执行 # netstat –na 会看见 22 端口已经被监听了(你的可能是其他端口,具体看你在 sshd2_config 文件中的设置了。)但我们不想每次都要手动启动 Ssh server,那么我们可以修改一下 /etc/rc.d/rc.local 文件,在这个文件的最后加入以下内容: #start ssh /usr/local/sbin/sshd & 其中第一行为注释内容,第二行为启动 SSH 服务器并作为后台守护进程运行。 这样就好了,系统重起时可以自动启动 SSH 服务,但是启动后你如果在服务器端插上显示器,会在最后该 登陆的时候看到一行字,意思就是 Ssh server 服务启动了,我比较挑剔,不想看到这个提示,而且我想 把 Ssh 服务放到 LINUX 服务启动过程中,这样比较美观一点。那么我们就不能修改/etc/rc.d/rc.local 文 件,我们要进入/etc/init.d/中建立一个 SHELL 文件,名字就叫 sshd 内容如下: #!/bin/bash cd /usr/local/sbin ./sshd & 然后给这个文件加上可执行权限 # chmod +x sshd 然后进入/etc/rc3.d,做一个软链接文件 # cd /etc/rc3.d # ln -s ../init.d/sshd S13sshd 这样就达到了我的要求,好了,Ssh server 的安装就介绍到这里吧,安装是很简单的,希望大家编译安装 成功。 WIN SERVER 的 Ssh server 的默认启动文件是 fsshd2.exe,一般装完 fsshd53b28.exe,服务就可以启动了, 如果没有启动,你可以手工启动这个文件。 (2)、启动客户端 双击桌面上的 SSH Secure Shell Client 图标,在工具栏中点击“quick connnect”,输入正确的主机名和用户 名,然后在弹出的对话框中输入密码完成登录,即可开始执行命令或者传输文件。Putty 和 F-secure SSH client 都是大同小异的。 四、以公私钥认证为基础的连接方法 1、为什么要公私钥认证方法(连接到主机不输入密码) 首先我们需要知道几个概念—Publick Key 是指公钥,而 private key 是指私钥。 认证的过程是这样的:public key 对数据进行加密而且只能用于加密, private key 只能对所匹配的 public key 加密过的数据进行解密。我们把 public key 放在远程系统合适的位置,然后从本地开始进行 ssh 连接。 此时,远程的 sshd 会产生一个随机数并用我们产生的 public key 进行加密后发给本地, 本地会用 private key 进行解密并把这个随机数发回给远程系统。最后,远程系统的 sshd 会得出结论——我们拥有匹配的 private key 允许我们登录,就这么简单! 2、WIN 客户端—UNIX 类服务端 (1)SSH 客户端之 SSH Secure Shell 的连接方法 人来疯技术文档之SSH 普及系列 2005-01-07 i:运行环境 WINDOWS 下安装 SSH 客户端,名字是 SSHSecureShellClient-3.2.9.exe,UNIX/LINUX 的 SERVER 端我 们使用的是 ssh-3.2.9-1.i386.rpm(如果你是 AIX 或者 SOLARIS,要下不同的版本,这里以 RHCE3 为例子)。 确定把 UNIX 类主机的默认的 Openssh 全部卸载掉后安装 ssh-3.2.9-1.i386.rpm。 ii:在本机生成密钥过程 WINDOWS下寻找ssh-keygen2.exe文件,这是生成密钥的文件,我的在C:\Program Files\SSH Communications Security\SSH Secure Shell,在 DOS 下执行这个文件,方法是 C:\Program Files\SSH Communications Security\SSH Secure Shell> ssh-keygen2 -t rsa 我用的是 rsa 的密钥,默认是 2048 位,足够我们用的了,还可以使用 dsa 方式的密钥。(采用 RSA 的密钥用 途广泛,大多数 server 支持,所以建议使用)系统自动生成密钥对,默认放在 C:\Documents and Settings\XXX\Application Data\SSH\UserKeys 目录下,其中 XXX 是你执行程序时用的帐户,默认名称是 id_rsa_2048_a 和 id_rsa_2048_a.pub,而后者就是我们要传到服务器上的公钥。(生成密钥对的同时让你输入 一个密码,因为我们想不输入密码直接登陆服务器,所以就直接回车了,但如果你想更安全一些,还是建 议你在这里也输入密码。) iii、用 SSH 客户端从 WIN 系统登陆到远程 UNIX 类服务器上 我们还按以前的方法登陆到远程 UNIX 类服务器上,这样登陆后我们会在用户目录下,PWD 一下,你可以 看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2 的文件夹,在里面建立一 个文件,authorization,内容如下: key id_rsa_2048_a.pub 然后把你 WINDOWS 客户端上的 id_rsa_2048_a.pub 上传到你在 UNIX 类服务器上刚建立好的.ssh2 文件夹 下,关闭 SSH 客户端。 iv、用 SSH 客户端公钥认证状态登陆 重新启动 SSH 客户端,在登陆认证状态栏选择 Public Key 方式,登陆到你刚才放 id_rsa_2048_a.pub 的那台 服务器,你会发现你马上就登陆进来了,没有密码限制了。这个时候用公私钥认证和用密码认证同时存在, 还没有达到我们的要求,那我们就在 UNIX 类服务器上修改/etc/ssh2/sshd2_config 文件 把以下如下三行的 password 删除,下面这三行是修改好的 AllowedAuthentications publickey AllowedAuthentications hostbased,publickey RequiredAuthentications publickey 这样当你再用密码登陆的时候就出现如下对话框了!! (2)SSH 客户端之 Putty 的连接方法 i、运行环境 安装了 putty-0.56-installer.exe 的 WINDOWS,这个 putty 安装包是所有工具的集合,其实如果只做为连接用, 你可以只下 putty0.56.exe 的。但我们这里因为要做密钥对,所以就下整个包安装吧。 人来疯技术文档之SSH 普及系列 2005-01-07 ii、在本机生成密钥过程 用 putty 套装的 puttygen 来产生密钥。密钥的类型选择 SSH2 RSA。密钥的位数选择 2048,然后点击 "Generator",此时密钥生成当然也有几个选项出现。如果你有不止一个 key,你可以在“Key comment”作注释 用于区别其他的 key。“Key passphrase“和“Confirm passphrase“用于对硬盘上的 key 进行加密,如过你自 己一个人用机器觉得安全有保障的话可以让它们为空。然后保存两个 key,用默认方式保存,那么公钥你 可以指定文件名,私钥默认的文件扩展名是.ppk。在这里我们命名它为 test.ppk,而公钥我们保存为 test.pub, 需要注意的是,如果用 putty 连接,私钥的扩展名必须是.ppk,而且你还可以将这个.ppk 的私钥保存为 SSH Secure Shell 格式和 Openssh 格式认知的私钥,这个对两个 UNIX 类主机之间相互通信提供了很大帮助。(我 们以后会将两个 UNIX 类主机通过公私钥认证的方法给大家讲讲) iii、用 Putty 从本机登陆到远程 UNIX 类服务器上 我们还按先前的方法登陆到远程 UNIX 类服务器上,这样登陆后我们会在用户目录下,PWD 一下,你可以 看到你的用户目录路径,比如我的就是/home/test,那么好了,我们建立一个.ssh2 的文件夹,在里面建立一 个文件,authorization,内容如下: key test.pub 然后把你 WINDOWS 客户端上的 test.pub 上传到你在 UNIX 类服务器上刚建立好的.ssh2 文件夹下,关闭 Putty。这个上传命令你可以用 put,下载就用 get。你的通道可以用 PSFTP 建立,这个也在 PUTTY 的组件 中。 iv、用 SSH 客户端公钥认证状态登陆 重新启动 Putty,建立一个 session 命名为 test,设定你要登陆的远程 ip,协议设为 ssh,Connection 设定在 ssh 的 auth 选项中,将 private key 的文件选择为刚才我们由 puttygen 产生的密钥 test.ppk。点 Open,要求输入 username,我们输入用户名后远程系统开始 public key 认证,如果密钥有 passphrase 则需要输入,否则直接 就登录了。这个时候用公私钥认证和用密码认证同时存在,还没有达到我们的要求,那我们就在 UNIX 类 服务器上修改/etc/ssh2/sshd2_config 文件 把以下如下三行的 password 删除,下面这三行是修改好的 AllowedAuthentications publickey AllowedAuthentications hostbased,publickey RequiredAuthentications publickey 这样当你再用密码登陆的时候就出现如下对话框了!! v、用 pageant 管理加密的私钥 如果 private key 用 passphrase 加了密,可以运行 pageant.exe。运行后,在 system tray 里面就会出现一个 戴着帽子的图标。双击这个图标,就会有一个对话框出现。但击 Add Key,然后选择加了密的 private key, 单击 Open 后,就会出现另一个对话框问你要这个 private key 的 passphrase。输入 passphrase 并单击 OK 后,在第一个对话框里面就会出现这个 key 的信息,表示这个 key 已经被加上了。然后打开 putty,load 要用该 key 的 session,然后在左面的菜单里,选择 connection,然后在右面的 Auto-login username 里面 填入你的用户名,在 Connection->SSH->Auth->Private key file for authentication 里面,填入上面的 private key 文 件,再 回 到 session ,将 所 作 的 变 化 保 存 下 来。从 此 以 后,这 个 session 就 不 会 提 示 输 入 人来疯技术文档之SSH 普及系列 2005-01-07 username ,password 或 passphrase 了,包括用 psftp 时也是。 如果你还要从这个机器再 ssh 到其他的有 sshd 的机器(比如说你先 ssh 到防火墙,再 ssh 到防火墙后面 的机器上),在上面提到的 Connection->SSH->Auth 里面将 Allow agent forwarding 打上钩(别忘了保存 session),这样再 ssh 到别的机器也不需要输入 password 或 passphrase 了。当然,public key 也需要拷贝 到其他机器的 $HOME/.ssh/里面。做了以上修改后,需要重新启动 pageant。 3、UNIX 类客户端—UNIX 类服务端 1、运行环境 两边都是 UNIX 类的服务器 A 和 B,都已经安装了 SSH Secure Shell 的服务器程序且运行正常。我们需要 实现的是从主机 A 登陆到主机 B 上,不需要密码。 2、生成密钥过程 在主机 A 上: # cd /usr/local/bin # ./ssh-keygen2 -t rsa 默认密钥的位数是 2048,当提示你 Passphrase 的时候,直接按两次回车跳过,成功后会提示如下: Private key saved to /root/.ssh2/id_rsa_2048_a Public key saved to /root/.ssh2/id_rsa_2048_a.pub 3、从 A 登陆到 B 过程 我们进入当前 A 机器用户的 ssh2 目录,创建一个认证文件,步骤如下: # cd ~/.ssh2 # echo "IdKey id_rsa_2048_a" > identification 取保 id_rsa_2048_a 和 identification 是在同一个目录下,好了,在主机 A 上我们的步骤就完成了。 然后我们就把 id_rsa_2048_a.pub 传到我们要 ssh 到的主机 B 上。这个步骤略过。 ssh 登陆到主机 B 上,在 B 上的用户 ssh2 目录下创建一个 authorization 文件,步骤如下: # cd ~/.ssh2 # echo “key id_rsa_2048_a.pub” >> authorization //注意我们这里是追加 退出主机 B,回到主机 A # ssh [IP OF B] 显示 Authentication successful.不需要密码了!!否则会显示 Authentication failure.你得查查哪有问 题了。当然我们还要在 B 服务器上修改/etc/ssh2/sshd2_config 文件 把以下如下三行的 password 删除,下面这三行是修改好的 AllowedAuthentications publickey AllowedAuthentications hostbased,publickey RequiredAuthentications publickey 4、Unix 客户端连接 Win Server 这个很少有人用,但并不代表没有用处,其实是很有用处的,比如我较愿意在我的 LINUX 主机上维护我的 WIN 服务器,这样就是很好的解决方法啊 5、Win 客户端连接 Win Server 既然大家都习惯了用图形界面,那么我们用图形界面来制作密钥吧! 1、运行环境 两台 Windows 服务器,一台是 Win XP,另一台是 Win 2003,F-secure ssh server for win 装在 2003 上, 而 F-secure ssh client 装在 Win XP 上。 2、生成密钥过程(图例) 人来疯技术文档之SSH 普及系列 2005-01-07 双击桌面上的 F-secure ssh clien 图标,选择 Edit-Settings,出现界面如下: 找到 Global settings - User Keys,点击它,你会发现右边有个 Generate New Keypair,如下图: 点击 Generate New Keypair,出来界面,开始生成密钥: 人来疯技术文档之SSH 普及系列 2005-01-07 默认是 2048 位的 DSA 格式,如下图: 我们把 key type 改成 RSA 类型 按下一步,生成密钥: 人来疯技术文档之SSH 普及系列 2005-01-07 按下一步,配置密钥: 按你要求写好,下一步: 这样密钥过程就完成了,点击完成,然后我们用 ssh 登陆到 Win 2003 后(这个时候还有密码的),点击 Settings,到 User Keys 选项中,选中刚才建立的私钥,点击 Upload Public Key,出现对话框,如下: 人来疯技术文档之SSH 普及系列 2005-01-07 我们点 upload,程序自动上传公钥到 2003 服务器上,目录应该是 E:\Documents and Settings\###\.ssh2, 其中###是你的用户名,我把系统装在 E 盘了,这个大家应该能看明白,上传完后目录里面有两个文件: authorization 和 ###.pub,###是你自己生成的名字,比如我的就是 test.pub 3、用 SSH 客户端公钥认证状态登陆 我们退出 F-secure ssh client,然后重新登陆,认证方式选择 Public Key,按 Connect,不需要密码就登 陆进来了,但还不满足我们需要,我们不要密码登陆,那我们就在 2003 系统上点击 F-secure ssh server - Configuration ,找到 User Authentication 选项,把下面的 Password 项改为 Deny,把 Public Key 项 改成 Allow,其他不变,保存退出,OK!完成!! 四、Ssh 服务器安全配置 1、通过/etc/ssh2/sshd2_config 配置 Ssh server 安全 前面我们说过 sshd2_config 文件可以改端口,其实所有的安全选项也都在这个文件里,只是默认都没有开 而已,我们下一步就逐步来通过 sshd2_config 文件来配置安全强大的 Ssh server 吧,下面是 sshd2_config 文件,我们先来解读一下这个文件,如果我解释得不清楚或有错误,请大家指正: # vi /etc/ssh2/sshd2_config ##SSH 3.2 Server Configuration File ## General # HostKeyFile hostkey //此文件是安装完 Ssh server 后自动在/etc/ssh2/目录下生成的缺省私钥文件 # PublicHostKeyFile hostkey.pub //此文件是安装完 Ssh server 后自动在/etc/ssh2/目录下生成的缺省公钥文件,是采用 DSA 加密方式 # RandomSeedFile random_seed //此文件用来寻找随机数字生成器,用户不应修改此文件内容及权限,此文件的内容不可读 # BannerMessageFile /etc/ssh2/ssh_banner_message # BannerMessageFile /etc/issue.net //在登陆后弹出的信息,注意必须有路径,这和/etc/motd 的欢迎信息不一样。 # # VerboseMode no //是否打印 SSH2 的调试信息,一般选择默认的 NO,这样更安全 # QuietMode no //快速模式就是除非碰到错误,否则不写入日志,默认是 NO,这样更安全 # SyslogFacility AUTH # SyslogFacility LOCAL7 # SftpSyslogFacility LOCAL7 //SyslogFacility 设置在记录来自 sshd 的消息的时候,是否给出“facility code”。我们可以利用设定 facility 的值,把消息发到不同的地方。 值有如下几个: DAEMON,USER,AUTH,LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,LOCAL6,LOCAL7. DAEMON:守护进程 USER:用户进程 AUTH:认证进程 LOCAL0-LOCAL7:RFC3164 规定本地标识设备是 LOCAL0-LOCAL7 人来疯技术文档之SSH 普及系列 2005-01-07 ## Network # Port is not commented out, as it is needed by the example startup # scripts. Well, the default won't likely change. Port 22 //服务端口是 22 # ListenAddress any //在多网卡主机上允许设定监听地址 # ResolveClientHostName yes //允许解析客户机名称 # RequireReverseMapping no //逆向 IP 映射,SSH2 服务器可以根据客户端地址进行逆向 DNS 查询,以确保客户端的地址就是这个地址。 如果检查失败,连接拒绝。此值默认设为 no。 # MaxBroadcastsPerSecond 0 # MaxBroadcastsPerSecond 1 //UDP 数据报处理参数,设成 0 就是对 UDP 数据报不进行处理,而设成 1 就是进行处理,默认值建议为 0 # NoDelay no //如果是 yes,就是允许 socket 选项为 TCP_NODELAY,鉴于网络特性,建议设定值为 no # KeepAlive yes //可以断开失效的连接 # MaxConnections 50 # MaxConnections 0 # 0 == number of connections not limited //服务能提供的最大连接数,0 是连接不受限制 ## Crypto # Ciphers AnyCipher # Ciphers AnyStdCipher # Ciphers 3des # Following includes "none" 'cipher': # Ciphers AnyStd //允许所有支持算法。其它算法包括,3des-cbc,blowfish-cbc,twofish-cbc,arcfour,none # # MACs AnyMAC # MACs AnyStdMAC # Following includes "none" 'mac': # MACs AnyStd //MAC 算法支持:MAC 关键字可以让用户选择 sshd2 进行完整性检测所使用的算法,称为消息认证代码。用 于 sshd2 的有 hmac-sha1,hmac-md5,hmac-md5-96。 # # RekeyIntervalSeconds 3600 //服务器密钥一小时重新生成一次 人来疯技术文档之SSH 普及系列 2005-01-07 ## User # PrintMotd yes //设置 sshd 是否在用户登录的时候显示“/etc/motd”中的欢迎信息。 # CheckMail yes //设置 sshd 是否在用户登录的时候显示 MAIL 信息 # StrictModes yes //要求用户保护其与 SSH 有关的文件及目录,并对 sshd 的重要文件和目录的权限进行检查,如果检查失败, 服务器就拒绝对该用户的 SSH 连接。 # Specifies 1 hour (you can also use 'w' for week, 'd' for day, 'm' for # minute, 's' for seconds) # IdleTimeOut 1h # without specifier, the default number is in seconds # IdleTimeOut 3600 //空闲连接时间,如果值是 0 代表不限制时间。否则,超时就断开连接 # # UserConfigDirectory "%D/.ssh2" # UserConfigDirectory "/etc/ssh2/auth/%U" # AuthorizationFile authorization //用户公私钥认证选项,包括目录和认证文件名 # This variable is set here, because by default it's empty, and so no # variables can be set. Because of that, we set a few common ones here. SettableEnvironmentVars LANG,LC_(ALL|COLLATE|CTYPE|MONETARY|NUMERIC|TIME),PATH,TERM,TZ //可以自己设置环境变量,用户的变量在$HOME/.ssh2/environment 设置,而总的指导文件在 /etc/environment ## Tunneling # AllowX11Forwarding yes # AllowTcpForwarding yes //为了在本地运行远程的 X 程序必须设置这个选项,允许允许 tcp 端口转发和 X 转发,保护其它的 tcp 连 接,它的值直接影响到 AllowTcpForwarding 的值,它们必须是一致的 # AllowTcpForwardingForUsers sjl, cowboyneal@slashdot\.org # DenyTcpForwardingForUsers 2[[:digit:]]*4,peelo # AllowTcpForwardingForGroups privileged_tcp_forwarders # DenyTcpForwardingForGroups coming_from_outside //允许或禁止进行 TCP 转发的机制 # # Local port forwardings to host 10.1.0.25 ports 143 and 25 are # allowed for all users in group users. # Note that forwardings using the name of this host will be allowed (if # it can be resolved from the DNS). # # ForwardACL allow local .*%users \i10\.1\.0\.25%(143|25) 人来疯技术文档之SSH 普及系列 2005-01-07 # # Local port forwardings requested exactly to host proxy.company.com # port 8080 are allowed for users that have 's' as first character # and belong to the group with group id 10: # # ForwardACL allow local s.*%10 proxy\.company\.com%8080 # # Remote port forwarding is denied for all users to all hosts: # ForwardACL deny remote .* .* //Ssh 的隧道机制,用一个端口封装其他端口的数据,完全支持端口加密及 PROXY 跳转。 ## Authentication ## publickey and password allowed by default # AllowedAuthentications publickey,passoword # AllowedAuthentications hostbased,publickey,password # AllowedAuthentications hostbased,publickey,keyboard-interactive # RequiredAuthentications publickey,password //服务器支持的认证方式 # LoginGraceTime 600 //设定用户必须在 600 秒内成功登录,否则就断开连接 # AuthInteractiveFailureTimeout 2 //每次登陆失败的延迟时间,默认是 2 秒 # # HostbasedAuthForceClientHostnameDNSMatch no //客户端是否需要经过 DNS 认证,默认是 no # UserKnownHosts yes //信任的主机公钥放在$HOME/.ssh2/knownhosts,当你第一次登陆时,SSH 告诉你它不知道你的这台主机, 这是因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh2/knowhosts” 文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。如果禁用该项可防止用户给未知主机 提供信任权限,但目前就服务器提供的服务而言,我们需要打开此选项。 # AuthPublicKey.MaxSize 0 # AuthPublicKey.MinSize 0 //公钥长度不限制,数值 0 表示不受限制, # AllowAgentForwarding yes //允许中间人转发方式 # # AuthKbdInt.NumOptional 0 # AuthKbdInt.Optional pam,password # AuthKbdInt.Required password # AuthKbdInt.Retries 3 认证的人机交互操作选项,Kbd 是指 keyboard (这个理解不是很确认) # # PermitEmptyPasswords no 人来疯技术文档之SSH 普及系列 2005-01-07 //如果使用密码认证,并且有个账号没有设定密码,那么服务器就可以拒绝访问这个账号 # PasswordGuesses 3 //猜测密码的次数 ## Host restrictions # AllowHosts localhost, foobar.com, friendly.org # ## Next one matches with, for example, taulu.foobar.com, tuoli.com, but ## not tuoli1.com. Note that you have to input string "\." when you want it ## to match only a literal dot. You also have to escape "," when you ## want to use it in the pattern, because otherwise it is considered a list ## separator. ## ## AllowHosts t..l.\..* ## ## The following matches any numerical IP-address (yes, it is cumbersome) ## ## AllowHosts ([[:digit:]]{1\,3}\.){3}[[:digit:]]{1\,3} ## ## Same thing is achieved with using the special prefix "\i" in a ## pattern. This means that the pattern is only used to match ##IP-addresses. ## ## Using the above example: ## ## AllowHosts \i.* ## ## You can probably see the difference between the two. ## ## Also, you can use subnet masks, by using prefix "\m" ## ## AllowHosts \m127.0/8 ## and ## AllowHosts \m127.0.0.0/24 ## ## would match localhost ("127.0.0.1"). ## # DenyHosts evil\.org, aol\.com # AllowSHosts trusted\.host\.org # DenySHosts not\.quite\.trusted\.org # IgnoreRhosts no //是否禁止 SSHD 使用.rhosts 文件 # IgnoreRootRHosts no # (the above, if not set, is defaulted to the value of IgnoreRHosts) //允许登陆和禁止登陆的主机名的选项,另 Rhosts 认证的意思是可信主机认证通过检查远程主机名和相关 人来疯技术文档之SSH 普及系列 2005-01-07 用户名来实现对客户端的身份认证,后两项均是 rhosts(可信主机)认证的选项。 ## User restrictions # AllowUsers sj.*,s[[:digit:]]*,s(jl|amza) # DenyUsers skuuppa,warezdude,31373 # DenyUsers don@untrusted\.org # AllowGroups staff,users # DenyGroups guest,anonymous # PermitRootLogin yes # PermitRootLogin nopwd //允许登陆和禁止登陆的用户的选项,也包括 ROOT 用户 ## Chrooted environment # ChRootUsers anonymous,ftp,guest # ChRootGroups sftp,guest //禁止普通用户查看系统的其它目录,把其权限限制在自己的主目录下 ## SSH1 compatibility # Ssh1Compatibility no //禁用 ssh1 的兼容模式 # Sshd1Path //出于实用原因,也可以启用此模式,之前要指明 ssh1 服务器可执行文件位置 # # This is given as argument to sshd1 with "-f" if sshd2 is invoked # with "-f", otherwise the default configuration for sshd1 is used. # Sshd1ConfigFile /etc/sshd_config_alternate //关于 SSH1 的配置 ## subsystem definitions # Subsystems don't have defaults, so this is needed here (uncommented). subsystem-sftp sftp-server # Also internal sftp-server subsystem can be used. # subsystem-sftp internal://sftp-server //子系统,定义和调用远程命令的一个抽象层,用户可以通过在客户端命令行中给出命令来调用远程命令, 如:ssh server.examply.com /bin/tar c /home 这个命令调用 tar,远程把/home 拷贝到磁带上。子系统 是服务器机器上预定义的一组远程命令,这样就可以方便地执行。在服务器配置文档中定义:subsystem backups /bin/tar c /home , 要在服务器上运行该命令 , 可 以 使 用 -s 选 项 。 ssh -s backups server.example.com。缺省情况下,sshd2_config 中定义了一个子系统,subsystem-sftp 。不要删除这个 子系统,这是 scp2 和 sftp 必须的。 ## Subconfiguration # There are no default subconfiguration files. When specified the last # obtained keyword value will prevail. Note that the host specific files # are read before the user specific files. 人来疯技术文档之SSH 普及系列 2005-01-07 # Following matches (from) any host # # HostSpecificConfig .* /etc/ssh2/subconfig/host_ext.example # # Following matches to subnet mask: # # HostSpecificConfig \m192.168.0.0/16 /etc/ssh2/subconfig/host_int.example # # Following matches to users from ssh.com that have two character long # username or is sjl and belong to group wheel or wheel[0-9] # # UserSpecificConfig (..|sjl)%wheel[[:digit:]]?@ssh\.com /etc/ssh2/subconfig/user.example # # Following matches to the user anonymous from any host # # UserSpecificConfig anonymous@.* /etc/ssh2/subconfig/anonymous.example // 介绍完这个文件了,那让我们开始做安全吧!!(部分内容取自网上) (1)超级用户 root 不能直接登录服务器 我们需要将 sshd2_config 文件中的#PermitRootLogin yes 取消注释,将 yes 改为 no,然后,重新启动 SSH 服务器,这样只能用“su”命令从普通用户转成“root”。 (2) 如果想要让 root 安全登陆,只需要把 PermitRootLogin nopwd 选项打开,这样“root”用户就不 能从没有密匙的计算机上登录。 (3)允许或禁止某些用户或组用户使用 SSH 登录 修改 sshd2_config 文件中的以下几行内容: #AllowUsers sj.*,s[[:digit:]]*,s(jl|amza) #DenyUsers skuuppa,warezdude,31373 #DenyUsers don@untrusted\.org #AllowGroups staff,users #DenyGroups guest,anonymou 可以根据自己的实际需要,取消注释符“#”,加入实际的用户名或者组名,然后重新启动 SSH 服务器即可。 (4)使用 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-server 后此功能是打开的,如果你确认要这么做时,只需要检查一下。这样在进行 SSH 连接时就可以同时使用 SFTP 传输文件。 人来疯技术文档之SSH 普及系列 2005-01-07 (5)使普通用户仅使用 SFTP 而没有使用 Shell 的权限 默认情况下管理员给系统添加的账号将同时具有 SFTP 和 SSH 的权限。让普通用户使用 shell 执行命令是有 很大的安全隐患的,所以我们需要禁止用户使用 shell 执行命令而仅使用 SFTP 传输文件,因为 SFTP 没有 单独的守护进程,只能借助于 sshd 守护进程,所以我们仍然需要使用 SSH 服务器,要保证 sshd 守护进程 处于运行状态。具体实现方法如下: # cd /usr/local/bin # ls -l ssh-dummy-shell* sftp-server2* -rwxr-xr-x 1 root root 913496 Jan 10 13:10 sftp-server2 -rwxr-xr-x 1 root root 1408300 Jan 10 13:10 sftp-server2.static -rwxr-xr-x 1 root root 14152 Jan 10 13:10 ssh-dummy-shell -rwxr-xr-x 1 root root 444455 Jan 10 13:10 ssh-dummy-shell.static 其中带“static”后缀名就是我们前面编译时加上“--enable-static”选项后生成的。 下面以添加普通账号 test 为例讲述具体操作步骤: # mkdir /home/bin //在 home 目录建立一个名字叫 bin 的子目录 # cd /home/bin # copy /usr/local/bin/*.static . //拷贝两个带.static 的文件到当前目录 #……//这个命令我就不写了,就是把这两个文件的.static 去掉 # cd .. # chown -R root.root /home/bin # chmod -R 755 /home/bin # groupadd noshell //添加一个组,使以后所有禁止使用 shell 的用户都属于这个组,这样便于管理更多 的用户 # useradd -s /usr/local/bin/ssh-dummy-shell -g noshell test //添加 test 帐号 # passwd test //给 test 帐号添加密码 # mkdir /home/test/bin # cd /home/test/bin # ln -s /home/bin/ssh-dummy-shell ssh-dummy-shell # ln -s /home/bin/sftp-server sftp-server # chown -R root.root /home/test/bin # chmod -R 755 /home/test/bin 用户添加成功后,还需要修改 sshd2_config 文件,将下列内容: #ChRootGroups sftp,guest 改为: ChRootGroups sftp,guest,noshell 重新启动 SSH 服务器程序,在客户端使用 SSH Secure File Transfer Client 登录,即使选择显示根目录, 普通用户也看不到其它的任何目录,而是把自己的主目录当作根目录。注意,这里使用的是按用户所属组 限制,这样可以使包含在 noshell 组内的所有用户都可以实现此功能。若您只要限制个别用户的话,可以 修改#ChRootUsers anonymous,ftp,guest 一行 (6)用 SSH 设置“加密通道”(这个我没有条件来测试,有条件的请测试一下) “加密通道”的基础知识:SSH 的“加密通道”是通过“端口转发”来实现的。你可以在本地端口(没有 用到的)和在远程服务器上运行的某个服务的端口之间建立“加密通道”。然后只要连接到本地端口。所有 对本地端口的请求都被 SSH 加密并且转发到远程服务器的端口。当然只有远程服务器上运行 SSH 服务器软 件的时候“加密通道”才能工作。可以用下面命令检查一些远程服务器是否运行 SSH 服务: 人来疯技术文档之SSH 普及系列 2005-01-07 telnet [remote host IP] 22 如果收到这样的出错信息: telnet: Unable to connect to remote host: Connection refused 就说明远程服务器上没有运行 SSH 服务软件。 端口转发使用这样的命令语法: ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command] 为 POP 加上“加密通道” 你可以用 POP 协议从服务器上取 email。为 POP 加上“加密通道”可以防止 POP 的密码被网络监听器(sniffer) 监听到。还有一个好处就是 SSH 的压缩方式可以让邮件传输得更快。 假定你在 pop3.263.net 上有一个 POP 帐号,你的用户名是“123”你的 POP 口令是“456”。用来建立 SSH “加密通道”的命令是: ssh -f -C 123@pop3.263.net -L 1100:pop3.263.net:110 sleep 500 运行这个命令之后会提示你输入 POP 口令:输入 456 输入口令之后你就可以用“telnet”连接到本地的转发端口了。 telnet localhost 1100 你会收到远程 mail 服务器的“READY”消息。 当然,这个方法要求你手工输入所有的 POP 命令,这是很不方便的。可以用 outlook 为 X 加上“加密通道” 如果你打算在本地计算机上运行远程 SSH 服务器上的 X 程序,那么登录到远程的计算机上,创建一个名为 “~/.ssh2/environment”的文件并加上这一行: XAUTHORITY=/home/[remote user name]/.Xauthority (如果在远程主机上不存在“.Xauthority”文件,那么当用 SSH 登录的时候就会自动创建)。 比如启动一个 X 程序(xterm)可以这个命令: ssh -f -X-l [remote user name] [remote machine] xterm 这将在远程运行 xterm 这个程序。其它的 X 程序也是用相同的方法。 为 linuxconf 加上“加密通道” Linuxconf(http://www.solucorp.qc.ca/linuxconf/)是 Linux 的配置工具,它支持远程管理。Linuxconf 的 FAQ 重点说明了如何通过 SSH 使用 linuxconf: 其命令为: remadmin --exec [link_command] linuxconf --guiproto 如果你想在两台计算机之间用加密的方式传送信息,那么最好用 ssh。命令是: remadmin --exec ssh -l [account] linuxconf --guiproto 这是非常有效的而且运行用图形界面管理计算机。这种方法需要在客户端安装 linuxconf。其它的方法还 有直接登录到服务器上用“X11Forwarding”或字符界面运行 linuxconf。 为 Webmin 加上“加密通道” 人来疯技术文档之SSH 普及系列 2005-01-07 Webmin(http://www.webmin.com/webmin/)是一个新的基于浏览器的配置工具。它运行在 1000 端口。你可 以用 SSH 的“端口转发”对它进行加密: ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd 把浏览器指向 http://localhost:1234 附录:相关安全技术 rsh 命令族,rsh,rlogin and rcp。连接不加密,认证模型十分脆弱。 PGP 加密程序。它是基于文件的。 Kerberos 认证系统,用于网络可能被监视,而且计算机不是中心控制的环境。基于麻省理工学院的 Athena 项目。但 SSH 不是,SSH 是轻量级的,容易部署。Kerberos 使用前必须构建一些重要基础。 IPSEC,Internet 安全协议。 SRP,安全远程密码协议,是 Stanford 大学开发的。是一种专用的认证协议。 SSL,安全套接字。 stunnel,是一种 SSL 工具,它为 UNIX 环境现有的基于 TCP 的服务(POP,IMAP 等)增加 SSL 保护,而不用 修改服务器源程序。 ssh 代理 它可以把私钥保存在内存中,为认证提供服务,不用重复输入密码。直到用户退出为止,SSH-1 与 SSH-2 代理的兼容性是 SSH-1 的代理不能处理 SSH-2 的代理,SSH-2 的代理却可以处理 SSH-1 的代理请求。 SSH 的一些内幕 SSH 协议的主要特性和优点: 1、 使用强加密技术来保证数据的私密性。端到端通信用随机密钥进行加密,随机密钥为会话进行安全协 商,会话结束后被丢弃。支持的算法有 ARCFOUR,Blowfish,DES,IDEA,3DES 等。 2、通信完整性,确保通信不会被修改。SSH-2 基于 MD5 AND SHA-1 的加密 hash 算法。 3、认证,即发送者和接收者的身份证明。客户机和服务器双向认证。 4、授权,即对账号进行访问控制。 5、使用转发或隧道技术对其它基于 tcp/ip 的会话进行加密。支持三种转发,tcp 端口转发,X 转发,代理 转发。 SSH 可以防止的攻击 1、网络窃听,SSH 通信是加密的,即使截获会话内容,也不能将其解密。 2、名字服务和 IP 伪装,SSH 通过加密验证服务器主机身份可避免这类风险。 3、连接劫持,SSH 的完整性检测负责确定会话在传输过程是否被修改,如果被修改过,就关闭连接。 4、中间人攻击,SSH 利用两种方法防止这种攻击,第一种是服务器主机认证。除非攻击者已经成功攻击了 服务器主机,获得服务器的私有主机密钥。第二种是限制使用容易受到这种攻击的认证方法,密码认证容 易受到中间人攻击,而公钥和基于主机的/RhostsRSA 则对中间人攻击可以免疫。 5、插入攻击,这种攻击可以客户和服务器之间发送的正文数据流之间插入任意数据。ssh1 1.2.25 后和 openssh 的所有版本都专门进行了设计,来检测并防止这种攻击。这种检测程序增大了插入攻击的难度, 但是并不能完全防止。ssh2 使用强加密完整性检测手段来防止这个问题。可以用 3DES 算法来防止这种攻 击。 SSH 不能防止的攻击 1、 密码崩溃,密码认证是一种脆弱的认证形式,尽量使用公钥认证方式。如果必须要密码认证,可考虑 使用 S/Key 之类的一次性密码机制。 2、 IP AND TCP 攻击,由于 SSH 是在 TCP 之上进行操作的,因此容易受到针对 TCP 和 IP 缺陷而发起的攻 人来疯技术文档之SSH 普及系列 2005-01-07 击。SYN flood,TCP 不同步和 TCP 劫持等。只能通过更低层的防护措施来保护。 3、流量分析。 4、隐秘通道。 5、粗心大意。安全是一个过程,而不是一个产品,不要认为装上 SSH 就安全了。 全局文件和本地文件 全局文件通常是由管理员创建的,用来维护整台计算机上的客户行为。该文件通常位于/etc/ssh_config or /etc/ssh2/ssh2_config。每个客户也可以在自已账号中创建本地客户配置文件,通常是~/.ssh/config or ~/.ssh2/ssh2_config。本地配置文件优先级高于全局配置文件。命令行选项的优先级又高于本地配置文件。 客户端配置 离开正在运行的 ssh 客户端时,一定要用密码保护。在客户端配置文件中启用某些安全功能,并将其设置 为最强 Host * FallBackToRsh no 禁止使用不安全的 r-命令(ssh2)没有这个问题。 UseRsh no GatewayPorts no 禁止远程客户端连接本地的转发端口 StrictHostKeyChecking ask 在主机密钥发生变化时提醒你。请求你的处理意见。 人来疯技术文档之SSH 普及系列 2005-01-07 配置“/etc/ssh/ssh_config”文件 “/etc/ssh/ssh_config”文件是 OpenSSH 系统范围的配置文件,允许你通过设置不同的选项 来改变客户端程序的运行方式。这个文件的每一行包含“关键词-值”的匹配,其中“关键 词”是忽略大小写的。下面列出来的是最重要的关键词,用 man 命令查看帮助页(ssh (1)) 可以得到详细的列表。 编辑“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改变下面的参数: # Site-wide defaults for various options Host * ForwardAgent no ForwardX11 no RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication yes FallBackToRsh no UseRsh no BatchMode no CheckHostIP yes StrictHostKeyChecking no IdentityFile ~/.ssh/identity Port 22 Cipher blowfish EscapeChar ~ 下面逐行说明上面的选项设置: Host * 选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 ForwardAgent no “ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。 ForwardX11 no “ForwardX11”设置 X11 连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。 RhostsAuthentication no “RhostsAuthentication”设置是否使用基于 rhosts 的安全验证。 RhostsRSAAuthentication no “RhostsRSAAuthentication”设置是否使用用 RSA 算法的基于 rhosts 的安全验证。 RSAAuthentication yes 人来疯技术文档之SSH 普及系列 2005-01-07 “RSAAuthentication”设置是否使用 RSA 算法进行安全验证。 PasswordAuthentication yes “PasswordAuthentication”设置是否使用口令验证。 FallBackToRsh no “FallBackToRsh”设置如果用 ssh 连接出现错误是否自动使用 rsh。 UseRsh no “UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。 BatchMode no “BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。 当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 CheckHostIP yes “CheckHostIP”设置 ssh 是否查看连接到服务器的主机的 IP 地址以防止 DNS 欺骗。建议设 置为“yes”。 StrictHostKeyChecking no “StrictHostKeyChecking”如果设置成“yes”,ssh 就不会自动把计算机的密匙加入 “$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 IdentityFile ~/.ssh/identity “IdentityFile”设置从哪个文件读取用户的 RSA 安全验证标识。 Port 22 “Port”设置连接到远程主机的端口。 Cipher blowfish “Cipher”设置加密用的密码。 EscapeChar ~ “EscapeChar”设置 escape 字符。 配置“/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. 人来疯技术文档之SSH 普及系列 2005-01-07 Port 22 ListenAddress 192.168.1.1 HostKey /etc/ssh/ssh_host_key ServerKeyBits 1024 LoginGraceTime 600 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”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以 秒为单位)。 KeyRegenerationInterval 3600 “KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。 重新生成密匙是为了防止用盗用的密匙解密被截获的信息。 人来疯技术文档之SSH 普及系列 2005-01-07 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 这样 人来疯技术文档之SSH 普及系列 2005-01-07 的匹配串,这些字符串用空格隔开。主机名可以是 DNS 名或 IP 地址。
还剩24页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

dugujian

贡献于2012-04-06

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf