SSH 这个知识点 是从一个位从事运维行业16年左右新出的linux书上学习到的。我的学习资源除了这位之还有就是之前所提到的目前就职于腾讯的高级工程师。首先得先感谢他们给予我的帮助,也算是我人生当中的导师。在linux方面,老师也给出系统的学习方法和知识体系。我也会把学习的知识点都会分享出来。这是老师常教育我做人方面的。后面我会列出来我将要复习的知识点,以后的博客,也就是针对这些去学习的。

        为何要说SSH远程连接,因为几乎在所有的互联网企业环境中,最常用提供Linux远程连接服务的工具就是SSH软件了,SSH分为SSH客户端和SSH服务器端两部分。其中,SSH服务器端包含的软件程序主要有 openssh 和 openssl.

        Openssh 是提供ssh 服务的程序  

   Openssl 是为了SSH提供连接加密的程序。

       在linux系统中可以使用如下命令查询SSH服务器端工具的安装情况.


       rpm  -qa  openssh   openssl 

       

        阿凡达学Linux-----SSH详解_第1张图片


1、SSH 服务器端介绍


启动linux 系统时,默认情况下,ssh服务器程序就会跟随系统一起启动,SSH服务是一个守护进程 (daemon) ,它在系统后台永久运行并时刻响应所有来自SSH客户端的连接请求。SSH服务器端的进程名为( sshd ),负责实时监听远程SSH 客户端的连接请求并进行处理。这些请求一般包括公共秘钥认证,密钥交换,对称密钥加密和非安全连接等。SSH服务是linux系统优化时需要保留开机自启动的服务之一。


2、SSH 客户端介绍


SSH客户端最常用的工具就是 windows 平台上运行的SecureCRT了。除它之外还有 xshellputty以及 linux下的ssh 客户端软件。


3、SSH协议介绍


SSH服务端和SSH客户端之间的交流都是通过SSH协议来实现的。SSH协议是 Secure Shell Protocol 的简写,由 IETF工作小组制定。在进行数据传输之前,SSH先通过加密技术对联机数据包进行加密处理,然后在进行数据传输,这样就可确保传递的数据安全。


SSH是专门为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效地防止远程管理过程中的信息泄露,在当前的生产环境中,很多企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件。例如telnet 23端口 它是非加密的。


SSH协议有两个不兼容的版本。

SSH1.x和SSH2.x


OpenSSH同时支持这两个版本。2.x的客户端程序不能连接到1.x服务程序上。2.x1.x更安全。一般情况下,服务器端通过2.x协议提供服务。


4、SSH 客户端 和 SSH 服务端远程连接的形象示意图。如图所示


阿凡达学Linux-----SSH详解_第2张图片



5、我的虚拟机ip地址 为 192.168.5.185。假设存在故障,检查的思路如下:

    阿凡达学Linux-----SSH详解_第3张图片  

  1》ping 192.168.5.185  ping 命令从客户端发包到服务器,是否有数据返回.


    阿凡达学Linux-----SSH详解_第4张图片


 2》telnet 192.168.5.185 22


  阿凡达学Linux-----SSH详解_第5张图片


 阿凡达学Linux-----SSH详解_第6张图片


3》检查 iptables 等防火墙 策略是否阻挡了连接


    /etc/init.d/iptables status


  


 6、远程登录成功之后的提示语

   

    文件的路径 /etc/motd 里面的内容是随自己添加的

     也可以不使用 vim  echo "xxx,我爱你"> /etc/motd 这也是一种办法 


阿凡达学Linux-----SSH详解_第7张图片


7、ssh 配置文件

    路径:  /etc/ssh/sshd_config

       service  sshd restart  重启 

       service sshd stop      停止

       Service sshd start      开始

       Service sshd status    查看状态

    

    我把配置文件里常见的参数设置都粘贴了出来      


    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”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

    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”设置是否允许用口令为空的帐号登录。


这是我将老师传授我的所有SSH知识点都分享了出来,图是第一次画,所以难免会有些难看,以后我会改进的。这也算是我对老师这么辛苦教我的感恩。谢谢您们!


                                                                 阿凡达---23:19