共计 3260 个字符,预计需要花费 9 分钟才能阅读完成。
一、远程连接协议;
telnet:是一种通用的远程登陆服务的标准协议和主要方式,它为用户提供了在本地计算机上完成远程主机工作的能力;telnet 采用 C / S 架构,工作与 23/tcp 端口上,在 CentOS6 下,软件包主要为服务端 telnet-server 和客户端 tennet,服务进程被被超级进程 xinetd 管理,禁止管理员直接登陆;在用户登录传输信息的过程中都是明文信息,无法保障安全,所以不建议用 telnet。
ssh:Secure Shel,即安全外壳协议;SSH 为建立在应用层和传输层基础上的安全协议,ssh 也采用 C / S 架构,工作与 22/tcp 端口上;ssh 有两个版本,sshv1 和 sshv2;
sshv1:基于 CRC-32 做 MAC;不安全,不推荐使用;
sshv2:基于双方主机的协商选择使用最安全的 MAC 方式,机密机制及 MAC 机制由双方协商选定;基于 DH 实现密匙交换,基于 RSA 或 DSA 实现身份认证,客户端通过检查服务器端的主机密匙来判断是否能够继续通信。
二、OpenSSH 简述:
是一组用于安全地访问远程计算机的连接工具。它可以作为 rlogin、rsh rcp 以及 telnet 的直接替代品使用。更进一步,其他任何 TCP/IP 连接都可以通过 SSH 安全地进行隧道 / 转发。OpenSSH 对所有的传输进行加密,从而有效地阻止了窃听、连接劫持,以及其他网络级的攻击。OpenSSH 由 OpenBSD project 维护。
登录过程和使用 rlogin 或 telnet 建立的会话非常类似。在连接时,SSH 会利用一个密钥指纹系统来验证服务器的真实性。只有在第一次连接时,用户会被要求输入 yes。之后的连接将会验证预先保存下来的密钥指纹。如果保存的指纹与登录时接收到的不符,则将会给出警告。指纹保存在~/.ssh/known_hosts 中,对于 SSHv2 指纹,则是~/.ssh/known_hosts2。
默认情况下,较新版本的 OpenSSH 只接受 SSHv2 连接。如果能用版本 2 则客户程序会自动使用,否则它会返回使用版本 1 的模式。此外,也可以通过命令行参数 - 1 或 - 2 来相应地强制使用版本 1 或 2。保持客户端的版本 1 能力是为了考虑较早版本的兼容性。
OpenSSH 的组成:
采用 C / S 架构;
Client:Linux 下工具主要为 ssh、scp、sftp,软件包为 openssh-client;
Windows 下 ssh 客户端工具有:putty、xshell、securecrt、sshshellclient;
Server:服务进程 sshd,软件包为 openssh-server;
三、OpenSSH 客户端应用;
# yum install openssh-client:安装 openssh 客户端;
# /etc/ssh/ssh_config:配置文件
1、ssh:
命令语法:
# ssh [username@]host[-p PORT] [COMMAND]
# ssh [-l username] host [-p PORT] [COMMAND]
username@=-l username:指定登录远程主机的用户,不指定则使用本地当前用户尝试登陆,如果远程主机不存在此用户,会报错;
-p PORT:指定远程服务器端口,默认为 22;
COMMAND:登录远程主机执行一次指定的命令并返回结果,不会停留在远程主机上;
2、scp:
利用 ssh 协议在主机之间实现安全文件传输的工具;
# scp SRC1… DEST
命令选项:
-r:递归,复制目录时使用;
-p:保持源文件的元数据信息,包括 mode 和 timestamp;
-q:静默模式;
-p PORT:指定 ssh 协议监听的端口;
分两种情形:
1)、源文件在本机,目标为远程;
# scp /path/to/somefile… USERNAME@HOST:/path/to/somewhere
2)、源文件在远程,本地为目标;
# scp USERNAME@HOST:/path/to/somewhere /path/to/somewhere
3、sftp;
基于 ssh 的 ftp 服务:
# sftp USERNAME@HOST:登陆 ftp;
四、openssh 的服务端:
# yum install openssh-server:安装 openssh 客户端;
# chkconfig sshd on:sshd 服务开机启动;
# service sshd start:启动 sshd 服务:
# sun –tnl | grep :22:查看 22/tcp 号端口;
# /etc/ssh/sshd_config:配置文件
# /etc/rc.d/init.d/sshd:服务脚本
# /etc/sysconfig/sshd:脚本配置文件
# man sshd_config:查看配置参数
1、sshd 认证方式:
1)、基于口令的认证;
即用户名和密码;
2)、基于密钥的认证
# ssh-keygen -t rsa:rsa 算法生成密钥;默认密钥为 id_rsa(私钥),id_rsa.pub(公钥);
-f /path/to/somefile:密钥文件保存位置;
-P ‘ ‘:指定 oldpassword;
# ssh-copy-id -i .ssh/id_rsa.pub USERNAME@HOST:传输自动验证密钥文件;
也可以公钥文件传输(scp)给远程主机,远程主机将公钥信息追加至指定用户~/.ssh/authorized_keys,授权远程登陆;
操作实例;
2、sshd 最佳实践;
1)、不要使用默认的 22 号端口;
2)、不要使用 protocol1;
3)、限制可登录的用户;
白名单:
AllowUserSUSEr1 user2 …
AllowGroups grp1 grp2…
黑名单:
DenyUsers
DenyGroups
4)、设定空闲会话超时时长;
ClientAliveInterval 300
ClientAliveCountMax 0
5)、利用防火墙设置 ssh 访问策略;
6)、仅监听在特定的 IP 地址,而非本机所有的 IP 地址;
7)、使用强密码策略
# tr -dcA-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
8)、使用基于密钥的认证;
9)、禁止使用空密码;
10)、禁止 root 用户直接登录;
11)、限制 ssh 的访问频度
12)、做好日志,经常分析;
更多 OpenSSH 相关内容可以查看以下的有用链接:
在 Ubuntu Server 13.10 系统中安装配置 OpenSSH http://www.linuxidc.com/Linux/2014-02/96953.htm
Ubuntu 安装远程登录 OpenSSH 服务 http://www.linuxidc.com/Linux/2014-02/97218.htm
通过 OpenSSH 远程登录时的延迟问题解决 http://www.linuxidc.com/Linux/2013-07/86879.htm
Ubuntu 12.10 下 OpenSSH 的离线安装方法 http://www.linuxidc.com/Linux/2013-04/82814.htm
OpenSSH 升级步骤及注意事项详解 http://www.linuxidc.com/Linux/2013-04/82123.htm
OpenSSH 普通用户无法登录的几种情况的解决方法 http://www.linuxidc.com/Linux/2012-05/59457.htm
通用线程: OpenSSH 密钥管理,第 1 部分理解 RSA/DSA 认证 http://www.linuxidc.com/Linux/2011-08/39871.htm
RedHat 安装 OpenSSH 和配置 sftp 锁定目录 http://www.linuxidc.com/Linux/2012-12/75398.htm
OpenSSL 的详细介绍:请点这里
OpenSSL 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/122118.htm