zoukankan      html  css  js  c++  java
  • ssh的配置,ssh打开密钥登陆,关闭密码登陆。

    刚装玩fedora,那么我们就以fedora为例来说一下怎么配置:

    1、先确认是否已安装ssh服务:

      [root@localhost ~]# rpm -qa | grep openssh-server

     openssh-server-5.3p1-19.fc12.i686 (这行表示已安装)

      若未安装ssh服务,可输入:

      #yum install openssh-server 

      进行安装

    2、winscp登陆,用root密码登陆。

    3、修改配置文件:

    #vi /etc/ssh/sshd_config  

    winscp登陆的话,就直接修改/etc/ssh/sshd_config  

    找到AuthorizedKeysFile .ssh/authorized_keys

    这就是存在服务器上的公钥文件,一行一个。

    自己创建一下

    完整路径是  /root/.ssh

    在winscp下要用一下手动打开(ctrl+o),.ssh隐藏了,打开路径/root/.ssh

    如果不存在,就在root下手动创建一个.ssh文件夹

    新建文件,复制你的公钥那行保存

    找到:PasswordAuthentication yes

    允许密码登陆,改为no,禁止密码登陆。

    下面是对SSH配置文件的一些选项的分解说明,ssh_config是OpenSSH客户端的配置文件,sshd_config是OpenSSH服务器端的配置文件。
    
    ssh_config的内容如下:
    
    
    # This is the ssh client system-wide configuration file.  See ssh_config(5) for more information.  This file provides defaults for users, and the values can be changed in 
    
    # er-user configuration files or on the command line.
    
    
    # Configuration data is parsed as follows: // 配置选项生效的优先级
    #  1. command line options // 命令行选项
    #  2. user-specific file // 用户指定文件
    #  3. system-wide file // 系统范围的文件
    # Any configuration value is only changed the first time it is set. Thus, host-specific definitions should be at the beginning of the configuration file, and defaults at the end.
    
    # Site-wide defaults for some commonly used options.  For a comprehensive list of available options, their meanings and defaults, please see the ssh_config(5) man page.
    
    
    Host * // 使用的计算机范围,'*'表示全部
    #   ForwardAgent no // 设置连接是否经过验证代理(如果存在)转发给远程计算机
    #   ForwardX11 no // 设置X11连接是否被自动重定向到安全的通道和显示集
    #   ForwardX11Trusted yes // 是否允许转发X11会话
    #   RhostsRSAAuthentication no // 设置是否使用RSA进行rhosts的安全验证
    #   RSAAuthentication yes // 设置是否使用RSA进行安全验证
    #   PasswordAuthentication yes // 设置是否需要口令验证
    #   HostbasedAuthentication no
    #   GSSAPIAuthentication no 
    #   GSSAPIDelegateCredentials no
    #   GSSAPIKeyExchange no
    #   GSSAPITrustDNS no
    #   BatchMode no // 如果为yes,则交互输入口令时的提示(passphrase/password的提示)信息将被禁止
    #   CheckHostIP yes // 设置SSH是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为yes
    #   AddressFamily any
    #   ConnectTimeout 0
    #   StrictHostKeyChecking ask // 如果设置成yes,SSH就不会自动把计算机的密钥加入$HOME/.ssh/known_hosts文件,并且一旦计算机的密匙发生了变化,就拒绝连接
    #   IdentityFile ~/.ssh/identity 
    #   IdentityFile ~/.ssh/id_rsa // RSA安全验证文件的位置
    #   IdentityFile ~/.ssh/id_dsa // DSA安全验证文件的位置
    #   Port 22 // 服务器端口
    #   Protocol 2,1 // 使用的SSH协议
    #   Cipher 3des // 设置加密的方式
    #   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
    #   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
    #   EscapeChar ~ // 设置Escape(转义)字符
    #   Tunnel no
    #   TunnelDevice any:any
    #   PermitLocalCommand no
    #   VisualHostKey no
    #   ProxyCommand ssh -q -W %h:%p gateway.example.com
        SendEnv LANG LC_* // 局部环境变量
        HashKnownHosts yes
        GSSAPIAuthentication yes
        GSSAPIDelegateCredentials no
    
    
    sshd_config的内容如下:
    
    # Package generated configuration file See the sshd_config(5) manpage for details
    
    # What ports, IPs and protocols we listen for
    Port 22 // sshd的监听端口号,默认为22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0 // 设置sshd服务绑定的IP地址,0.0.0.0表示侦听所有地址
    Protocol 2 // 默认只使用2.*版本的SSH协议
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key // SSH2版本的RSA密钥存放位置
    HostKey /etc/ssh/ssh_host_dsa_key // SSH2版本的DSA密钥存放位置
    HostKey /etc/ssh/ssh_host_ecdsa_key // SSH2版本的ECDSA密钥存放位置
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    
    # Lifetime and size of ephemeral version 1 server key
    KeyRegenerationInterval 3600 // 密钥每隔1小时生成一次
    ServerKeyBits 768 // SSH服务器密钥的位数
    
    # Logging
    SyslogFacility AUTH // 设置sshd发送到syslog所使用的日志类型
    // 设置在记录来自sshd的消息时是否给出facility code
    LogLevel INFO // syslog日志级别
    
    # Authentication:
    LoginGraceTime 120 // 设置如果用户不能成功登录,sshd将会在这个配置参数指定的时间过后断开连接(单位为秒)
    PermitRootLogin yes // 如果为yes则允许root用户使用ssh登录,为no则表示不允许root进行ssh登录
    StrictModes yes // 设置sshd在接受登录请求前是否检查用户的主目录以及rhosts文件的权限和所有者等信息。防止目录和文件设成任何人都有写权限
    
    
    RSAAuthentication yes // 是否允许RSA验证
    PubkeyAuthentication yes // 是否允许公钥验证
    AuthorizedKeysFile %h/.ssh/authorized_keys// 公钥文件存放的位置
    
    
    
    # Don't read the user's ~/.rhosts and ~/.shosts files
    IgnoreRhosts yes // 验证时是否使用'~/.rhosts'和'~/.shosts'文件
    # For this to work you will also need host keys in /etc/ssh_known_hosts
    RhostsRSAAuthentication no // 设置是否允许用rhosts或/etc/hosts.equiv加上RSA进行安全验证
    # similar for protocol version 2
    HostbasedAuthentication no
    # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
    #IgnoreUserKnownHosts yes // 设置sshd在进行RhostsRSAAuthentication安全验证时是否信任用户的'~/.ssh/known_hosts'文件
    
    # To enable empty passwords, change to yes (NOT RECOMMENDED)
    PermitEmptyPasswords no // 设置是否允许用空口令登录
    
    # Change to yes to enable challenge-response passwords (beware issues with
    # some PAM modules and threads)
    ChallengeResponseAuthentication no // 设置是否允许使用提示/应答式认证。sshd支持login.conf文件中定义的所有认证类型
    
    # Change to no to disable tunnelled clear text passwords
    #PasswordAuthentication yes // 设置是否需要口令验证,默认为yes
    
    # Kerberos options // Kerneros验证
    #KerberosAuthentication no 
    #KerberosGetAFSToken no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    
    # GSSAPI options // GSSAPI 验证
    #GSSAPIAuthentication no
    #GSSAPICleanupCredentials yes // 清除验证信息
    
    X11Forwarding yes // 设置sshd是否允许X11转发,默认为允许
    X11DisplayOffset 10 
    PrintMotd no // 设置sshd是否在用户登录时显示/etc/motd中的信息
    PrintLastLog yes // 交互式登录时是否输出用户上次登录的日期和时间
    TCPKeepAlive yes // TCP活动保持
    #UseLogin no // 指定login命令是否可用于交互式登录会话
    
    #MaxStartups 10:30:60
    #Banner /etc/issue.net // 设置保存banner信息的文件位置,用户登录后会显示该banner信息
    
    # Allow client to pass locale environment variables
    AcceptEnv LANG LC_* // 指定客户端发送的那些环境变量能后复制到当前会话的运行环境(客户端需要设置其配置文件ssh_config中的SendEnv参数)
    
    Subsystem sftp /usr/lib/openssh/sftp-server // 用于配置一个外部的服务程序,如文件传输服务器sftp-server。配置参数的值应该是一个系统名与命令,能够基于客户系统的请求开始运行。sftp-server命令实现了sftp文件传输子系统。这个配置参数仅使用与SSH2
    
    # Set this to 'yes' to enable PAM authentication, account processing, and session processing. If this is enabled, PAM authentication will be allowed through the 
    
    # ChallengeResponseAuthentication and PasswordAuthentication.  Depending on your PAM configuration, PAM authentication via ChallengeResponseAuthentication 
    
    # may bypass the setting of "PermitRootLogin without-password". If you just want the PAM account and session checks to run without PAM authentication, then enable 
    
    #this but set PasswordAuthentication and ChallengeResponseAuthentication to 'no'.
    
    UsePAM yes // 是否启用PAM插件式认证模块,默认为yes
    View Code

    关于配置文件的详细说明,留着,不用看。

    禁止了密码登陆,设置了公钥。

    重启sshd,在终端窗口运行:

    systemctl restart sshd.service

    可以配置winscp用私钥登陆了。

  • 相关阅读:
    数据库封装类使用
    C# Socket-TCP异步编程原理详解附源码
    Mysql 5.7安装与配置-默认密码
    Python-Django WebAPi基本使用方法
    C# 微信小程序获取openid sessionkey
    voith项目配置服务程序
    社区安防系统
    数据结构和算法-一元多项式运算算法(加法)
    数据结构和算法-贪婪算法
    Oracle分页SQL语句
  • 原文地址:https://www.cnblogs.com/jackadam/p/8213587.html
Copyright © 2011-2022 走看看