Linux下远程连接SSH和Openssh应用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、远程连接协议;

  telnet:是一种通用的远程登陆服务的标准协议和主要方式,它为用户提供了在本地计算机上完成远程主机工作的能力;telnet采用C/S架构,工作与23/tcp端口上,在CentOS6下,软件包主要为服务端telnet-server和客户端tennet,服务进程被被超级进程xinetd管理禁止管理员直接登陆;在用户登录传输信息的过程中都是明文信息,无法保障安全,所以不建议用telnet


  sshSecure Shel,即安全外壳协议;SSH 为建立在应用层和传输层基础上的安全协议,ssh也采用C/S架构,工作与22/tcp端口上;ssh有两个版本,sshv1sshv2

    sshv1:基于CRC-32MAC;不安全,不推荐使用;

    sshv2:基于双方主机的协商选择使用最安全的MAC方式,机密机制及MAC机制由双方协商选定;基于DH实现密匙交换,基于RSADSA实现身份认证,客户端通过检查服务器端的主机密匙来判断是否能够继续通信。


二、OpenSSH简述:

  是一组用于安全地访问远程计算机的连接工具。它可以作为rloginrsh rcp以及telnet的直接替代品使用。更进一步,其他任何TCP/IP连接都可以通过SSH安全地进行隧道/转发。OpenSSH对所有的传输进行加密,从而有效地阻止了窃听、连接劫持,以及其他网络级的攻击。OpenSSHOpenBSD project维护。

  登录过程和使用rlogintelnet建立的会话非常类似。在连接时,SSH会利用一个密钥指纹系统来验证服务器的真实性。只有在第一次连接时,用户会被要求输入yes。之后的连接将会验证预先保存下来的密钥指纹。如果保存的指纹与登录时接收到的不符,则将会给出警告。指纹保存在~/.ssh/known_hosts中,对于SSHv2指纹,则是~/.ssh/known_hosts2

  默认情况下,较新版本的OpenSSH只接受SSHv2连接。如果能用版本2则客户程序会自动使用,否则它会返回使用版本1的模式。此外,也可以通过命令行参数-1-2来相应地强制使用版本12。保持客户端的版本1能力是为了考虑较早版本的兼容性。


OpenSSH的组成:

采用C/S架构;

 ClientLinux下工具主要为sshscpsftp,软件包为openssh-client

  Windowsssh客户端工具有:puttyxshellsecurecrtsshshellclient

 Server:服务进程sshd,软件包为openssh-server


三、Openssh客户端应用;

# yum install openssh-client    :安装openssh客户端;
# /etc/ssh/ssh_config    :配置文件


1ssh

命令语法:

# ssh [username@]host[-p PORT]  [COMMAND]
# ssh [-l username] host [-p PORT] [COMMAND]
 username@=-l username:指定登录远程主机的用户,不指定则使用本地当前用户尝试登陆,如果远程主机不存在此用户,会报错;
 -p PORT:指定远程服务器端口,默认为22;
 COMMAND:登录远程主机执行一次指定的命令并返回结果,不会停留在远程主机上;

Linux下远程连接SSH和Openssh应用_第1张图片


 

2scp

利用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


3sftp

基于sshftp服务:

# sftp USERNAME@HOST    :登陆ftp;


四、openssh的服务端:

# yum install openssh-server    :安装openssh客户端;
# chkconfig sshd on    :sshd服务开机启动;
# service sshd start    :启动sshd服务:
# sun �tnl | grep :22    :查看22/tcp号端口;

wKioL1W7PwWiWWlpAAA4UEnIq7w917.jpg



# /etc/ssh/sshd_config    :配置文件
# /etc/rc.d/init.d/sshd    :服务脚本
# /etc/sysconfig/sshd    :脚本配置文件
# man sshd_config    :查看配置参数


1sshd认证方式:

 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张图片


2sshd最佳实践;

 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)、做好日志,经常分析;



本文出自 “小马的学习记录” 博客,请务必保留此出处http://masachencer.blog.51cto.com/8683770/1680622

转载于:https://my.oschina.net/masachencer/blog/540887

你可能感兴趣的:(Linux下远程连接SSH和Openssh应用)