Linux下远程连接SSH和OpenSSH应用

一、远程连接协议

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:登录远程主机执行一次指定的命令并返回结果,不会停留在远程主机上;

Linux下远程连接SSH和OpenSSH应用

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号端口;

Linux下远程连接SSH和OpenSSH应用

# /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,授权远程登陆;

操作实例;

Linux下远程连接SSH和OpenSSH应用

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相关内容可以查看以下的有用链接: 

OpenSSL 的详细介绍:请点这里
OpenSSL 的下载地址:请点这里

相关推荐