zoukankan      html  css  js  c++  java
  • SSH详解

    Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。

    SSH 通常用于远程访问和执行命令,但是它也支持隧道,转发任意 TCP 端口以及 X11 连接;它还能够用 SFTP 或 SCP 协议来传输文件。

    一个 SSH 服务器,默认地,在 TCP 端口 22 进行监听。一个 SSH 客户端程序通常被用来建立一个远程连接到 sshd 守护进程。这两者都被广泛地存在于现代操作系统中,包括 Mac OS X,GNU/Linux,Solaris 和 OpenVMS 等。以专利的,自由软件的以及开源版本的形式和不同的复杂性和完整性存在。

    配置SSH

    客户端

    SSH客户端的配置文件是/etc/ssh/ssh_config 或 ~/.ssh/config.

    现在已经不需要额外设置 Protocol 2, 默认的协议已经是 Protocol 2 了(http://www.openssh.org/txt/release-5.4)。

    守护进程

    SSH 守护进程的配置文件是/etc/ssh/sshd_config

    实例:

    只允许某些用户访问的话,加入这一行:

    AllowUsers    user1 user2

    只允许一些组访问:

    AllowGroups   group1 group2

    要禁止通过SSH进行root用户登录,加入以下行:

    PermitRootLogin no

    管理 sshd 守护进程

    你可以使用下面的命令启动sshd:

    systemctl start sshd

    你可以使用下面的命令开机启动sshd:

    systemctl enable sshd.service
    警告: Systemd 是一个异步启动的进程。如果你绑定 SSH 守护进程到某个特定的 IP 地址 ListenAddress 192.168.1.100,它可能会在引导时启动失败,因为默认的 sshd.service 单元文件没有对网络接口启动的依赖。当绑定到一个 IP 地址时,你需要添加 After=network.target 到自定义的 sshd.service 单元文件中。参见 Systemd#Replacing provided unit files[broken link: invalid section].

    或者你可以启用SSH Daemon socket,这样当第一次传入连接时启动守护进程:

    systemctl enable sshd.socket

    如果你使用非默认端口22,你必须在文件(/lib/systemd/system/sshd.socket)中设置"ListenStream"为相应的端口。

    /etc/ssh/ssh_config配置文件说明:

    Host *
    选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。
    
    ForwardAgent no
    “ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。
    
    ForwardX11 no
    “ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。
    
    RhostsAuthentication no
    “RhostsAuthentication”设置是否使用基于rhosts的安全验证。
    
    RhostsRSAAuthentication no
    “RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。
    
    RSAAuthentication yes
    “RSAAuthentication”设置是否使用RSA算法进行安全验证。
    
    PasswordAuthentication yes
    “PasswordAuthentication”设置是否使用口令验证。
    
    FallBackToRsh no
    “FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。
    
    UseRsh no
    “UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。
    
    BatchMode no
    “BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。
    
    CheckHostIP yes
    “CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。
    
    StrictHostKeyChecking no
    “StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。
    
    IdentityFile ~/.ssh/identity
    “IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。
    
    Port 22
    “Port”设置连接到远程主机的端口。
    
    Cipher blowfish
    “Cipher”设置加密用的密码。
    
    EscapeChar ~
    “EscapeChar”设置escape字符。

    /etc/ssh/sshd_config配置文件说明

    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”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。
    
    ClientAliveInterval 300(默认为0)
    这个参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接
    
    
    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”设置是否允许用口令为空的帐号登录。
    
    AllowUsers admin
            “AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。
  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    园区网核心、防火墙、边界出口冗余实验配置
    PNETLab模拟器部署及使用配置
    基于RPS开发模式的可视化设计解决方案
    Python学习手册《Learning Python》
    【转】Windows 64bit下Python环境配置与集成IDE PyCharm
    时间复杂度完美例子---数组最大子序列和
  • 原文地址:https://www.cnblogs.com/likui360/p/6011897.html
Copyright © 2011-2022 走看看