1、SSH概述
传统的网络访问程序telnet在通信时很不安全,因为它使用明文方式传送口令和数据,通过技术手段 非常容易截得这些口令和数据。同时,这些服务程序的安全验证方式也是有弱点的。他没有验证机制,一旦有人采用”中间人“的方式,冒充真正的服务器接受传送给服务器的数据,就会出现严重的问题SSH(Secure SHell)可以将所有传输的数据进行加密,这样一些***方式就不能成功了,并且也能够阻止DNS和IP欺骗;还有一个额外的好处,就是SSH会压缩传输的数据,能够加快传输速度,目前常用的SSH软件是OpenSSH。SSH存在两个版本V1和V2,Red Hat Enterprise Linux 5使用的是V2,与V1相比,V2加强了密钥的认证方式,不仅在SSH建立连接时检查密钥,还会在通信中,检测密钥信息。而OpenSSH支持这两种版本
1.1、SSH的配置文件
SSH常用的配置文件有/etc/ssh/ssh_config-->客户端配置文件,/etc/ssh/sshd_config-->服务器端配置文件
1.1.1、客户端配置文件
该文件的格式为”字段值",其中字段忽略大小写,下面我们来简单的介绍一下常用的字段
Host * #指定配置生效的主机,设置的主机将使用其他设置。”*“表示所有的计算机
ForwardAgent #设置连接是否经过验证代理(如果存在)转发给远程计算机
ForwardX11 #设置xll连接是否被自动重定向到安全的通道和显示集
RhostsRSAAuthentication #设置是否使用rsa算法的基于rhosts的安全验证
RSAAuthentication #设置是否使用rsa算法进行安全验证
StrictHostKeyChecking #如果设置为yes,ssh就不会自动把计算机的密钥加入$home/.ssh/known_hosts文件,一旦计算机的密钥发生了变化,就拒绝连接
BatchMode #如果设为yes,passphrase/password的提示被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用
CheckHostIP #设置ssh是否查看连接到服务器的主机IP地址,以防DNS欺骗,建议设置为yes
Port 22 #设置连接到远程主机的端口
IdentityFile #设置从哪个文件读取用户的rsa安全验证标识
Protocol #设置客户端使用ssh版本
Cipher #设置加密方式
EscapeChar #设置escape字符
1.1.2、服务器端配置文件
该文件的格式为”字段值",其中字段忽略大小写,下面我们来简单的介绍一下常用的字段
Port 22 #设置sshd监听的端口号
ListenAddress 0.0.0.0 #设置sshd服务器绑定的IP地址,0.0.0.0表示侦听所有地址
HostKey /etc/ssh/ssh_host_key #设置包含计算机私人密钥的文件
ServerKeyBits 768 #定义服务器密钥位数
LoginGraceTime 2m #设置用户不能成功登陆时,切断连接之前服务器需要等待的时间(秒)
KeyRegenerationInterval 1h #设置在多少秒之后自动重新生成服务器的密钥,重新生成没要你
是为了防止盗用密钥解密截获的信息
PermitRootLogin no #设置root是否能够使用SSH登录,为了保证服务器的安全,建议不要设置为yes
IgnoreUserKnownHosts no #设置ssh daemon是否进行rhostsrsaauthentication安全验证时忽略用户的$home/.ssh/known_hosts
IgnoreRhosts yes #设置验证的时候是否使用rhosts和shosts文件
strictmodes yes #设置SSH在接收登录请求之前是否检验用户目录和rhosts文件的权限和所有权,防止将目录和文件设成任何人都有写权限
X11Forwarding yes #设置是否允许xll转发
PrintMotd yes #设置sshd是否在用户登录的时候显示/etc/motd中的信息
loglevel info #设置记录日志消息的层次
PasswordAuthentication yes #设置是否允许口令验证
PermitEmptyPasswords no #设置是否允许用户口令为空的账号登录
Allowusers tom #设置允许的用户,数量可以为多个,使用空格隔开
2、OpenSSH配置文件
2.1、口令认证
默认情况下,SSH仍然使用传统的口令验证。在使用这种认证方式时,不需要进行任何配置,用户就可以使用SSH 服务器存在的账号和口令登录到远程主机。所有传输的数据都会被加密,但是,口令验证是不能保证连接的服务器 就是真正的目的服务器。如果有其他服务器在冒充,客户端很有可能受到”中间人“的***。
2.2、密钥认证
密钥认证需要依靠密钥。首先创建一对密钥,并把密钥保存在远程服务器上。当登录远程主机时,客户端软件就会 向服务器发出请求,请求用自己的密钥进行认证。服务器收到请求后,首先在服务器的用户主目录下寻找公钥,然后 检查此公钥是否合法,如果合法就用公钥加密生成随机数,并返回给客户端。客户端软件收到服务器的回应后,使用 案私钥将数据解密并发给服务器,因为用公钥加密的数据只有用私钥解密。服务器经过比较就可以知道该客户连接的合法性。
2.2.1、案例:假如某公司内部有多台服务器。管理员为了保证服务器的安全性,设置了专有的系统账号test,并选择使用OpenSSH进行远程管理
配置过程如下:
传统的网络访问程序telnet在通信时很不安全,因为它使用明文方式传送口令和数据,通过技术手段 非常容易截得这些口令和数据。同时,这些服务程序的安全验证方式也是有弱点的。他没有验证机制,一旦有人采用”中间人“的方式,冒充真正的服务器接受传送给服务器的数据,就会出现严重的问题SSH(Secure SHell)可以将所有传输的数据进行加密,这样一些***方式就不能成功了,并且也能够阻止DNS和IP欺骗;还有一个额外的好处,就是SSH会压缩传输的数据,能够加快传输速度,目前常用的SSH软件是OpenSSH。SSH存在两个版本V1和V2,Red Hat Enterprise Linux 5使用的是V2,与V1相比,V2加强了密钥的认证方式,不仅在SSH建立连接时检查密钥,还会在通信中,检测密钥信息。而OpenSSH支持这两种版本
1.1、SSH的配置文件
SSH常用的配置文件有/etc/ssh/ssh_config-->客户端配置文件,/etc/ssh/sshd_config-->服务器端配置文件
1.1.1、客户端配置文件
该文件的格式为”字段值",其中字段忽略大小写,下面我们来简单的介绍一下常用的字段
Host * #指定配置生效的主机,设置的主机将使用其他设置。”*“表示所有的计算机
ForwardAgent #设置连接是否经过验证代理(如果存在)转发给远程计算机
ForwardX11 #设置xll连接是否被自动重定向到安全的通道和显示集
RhostsRSAAuthentication #设置是否使用rsa算法的基于rhosts的安全验证
RSAAuthentication #设置是否使用rsa算法进行安全验证
StrictHostKeyChecking #如果设置为yes,ssh就不会自动把计算机的密钥加入$home/.ssh/known_hosts文件,一旦计算机的密钥发生了变化,就拒绝连接
BatchMode #如果设为yes,passphrase/password的提示被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用
CheckHostIP #设置ssh是否查看连接到服务器的主机IP地址,以防DNS欺骗,建议设置为yes
Port 22 #设置连接到远程主机的端口
IdentityFile #设置从哪个文件读取用户的rsa安全验证标识
Protocol #设置客户端使用ssh版本
Cipher #设置加密方式
EscapeChar #设置escape字符
1.1.2、服务器端配置文件
该文件的格式为”字段值",其中字段忽略大小写,下面我们来简单的介绍一下常用的字段
Port 22 #设置sshd监听的端口号
ListenAddress 0.0.0.0 #设置sshd服务器绑定的IP地址,0.0.0.0表示侦听所有地址
HostKey /etc/ssh/ssh_host_key #设置包含计算机私人密钥的文件
ServerKeyBits 768 #定义服务器密钥位数
LoginGraceTime 2m #设置用户不能成功登陆时,切断连接之前服务器需要等待的时间(秒)
KeyRegenerationInterval 1h #设置在多少秒之后自动重新生成服务器的密钥,重新生成没要你
是为了防止盗用密钥解密截获的信息
PermitRootLogin no #设置root是否能够使用SSH登录,为了保证服务器的安全,建议不要设置为yes
IgnoreUserKnownHosts no #设置ssh daemon是否进行rhostsrsaauthentication安全验证时忽略用户的$home/.ssh/known_hosts
IgnoreRhosts yes #设置验证的时候是否使用rhosts和shosts文件
strictmodes yes #设置SSH在接收登录请求之前是否检验用户目录和rhosts文件的权限和所有权,防止将目录和文件设成任何人都有写权限
X11Forwarding yes #设置是否允许xll转发
PrintMotd yes #设置sshd是否在用户登录的时候显示/etc/motd中的信息
loglevel info #设置记录日志消息的层次
PasswordAuthentication yes #设置是否允许口令验证
PermitEmptyPasswords no #设置是否允许用户口令为空的账号登录
Allowusers tom #设置允许的用户,数量可以为多个,使用空格隔开
2、OpenSSH配置文件
2.1、口令认证
默认情况下,SSH仍然使用传统的口令验证。在使用这种认证方式时,不需要进行任何配置,用户就可以使用SSH 服务器存在的账号和口令登录到远程主机。所有传输的数据都会被加密,但是,口令验证是不能保证连接的服务器 就是真正的目的服务器。如果有其他服务器在冒充,客户端很有可能受到”中间人“的***。
2.2、密钥认证
密钥认证需要依靠密钥。首先创建一对密钥,并把密钥保存在远程服务器上。当登录远程主机时,客户端软件就会 向服务器发出请求,请求用自己的密钥进行认证。服务器收到请求后,首先在服务器的用户主目录下寻找公钥,然后 检查此公钥是否合法,如果合法就用公钥加密生成随机数,并返回给客户端。客户端软件收到服务器的回应后,使用 案私钥将数据解密并发给服务器,因为用公钥加密的数据只有用私钥解密。服务器经过比较就可以知道该客户连接的合法性。
2.2.1、案例:假如某公司内部有多台服务器。管理员为了保证服务器的安全性,设置了专有的系统账号test,并选择使用OpenSSH进行远程管理
配置过程如下:
- a、编辑远程服务器的/etc/ssh/sshd_conf文件
- 修改PasswordAuthentication字段,设置为no,禁止口令认证,只允许使用密钥证
- PasswordAuthentication no
- b、在客户端生成密钥
- [root@station41 ~]# ssh-keygen -d
- Generating public/private dsa key pair.
- Enter file in which to save the key (/root/.ssh/id_dsa): /home/test/.ssh/id_dsa
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /home/test/.ssh/id_dsa. #私钥文件
- Your public key has been saved in /home/test/.ssh/id_dsa.pub. #公钥文件
- The key fingerprint is:
- 12:a6:98:09:b3:fd:99:7e:36:14:8f:fd:62:14:46:bc root@station41.example.com
- [root@station41 ~]# cd /home/test/.ssh/
- [root@station41 .ssh]# ls
- id_dsa id_dsa.pub
- c、发布公钥
- [root@station41 .ssh]# ssh-copy-id -i /home/test/.ssh/id_dsa.pub 172.16.50.22
- 26
- The authenticity of host '172.16.50.22 (172.16.50.22)' can't be established.
- RSA key fingerprint is 98:08:cc:c1:2b:da:c2:34:c2:5d:fe:20:58:ec:b7:1b.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added '172.16.50.22' (RSA) to the list of known hosts.
- root@172.16.50.22's password:
- Now try logging into the machine, with "ssh '172.16.50.22'", and check in:
- .ssh/authorized_keys
- to make sure we haven't added extra keys that you weren't expecting.
- d、连接远程服务器
- [root@station41 ~]# ssh -l test 172.16.50.22
- Last login: Fri Apr 5 23:51:44 2013 from 172.16.50.22
转载于:https://blog.51cto.com/jilili/1172257