zoukankan      html  css  js  c++  java
  • ssh

    ssh在linux上有两个服务,一个是ssh客户端,另一个是sshd服务端

    针对服务器的注意事项:
    1.密码应该经常换
    2.使用非默认端口
    3.限制登录客户地址
    4.禁止管理员直接登录
    5.仅允许有限用户登录
    6.使用基于秘钥的认证
    7.禁止使用版本1

    客户端:

    配置文件在/etc/ssh/ssh_config

    1.密码ssh
      ssh   root@ip/主机名:在linux内以对方root的身份ssh登录   
      ssh   root@ip/主机名  ['命令']:以对方root身份远程执行一条命令
      ssh -p #:使用非默认端口
      如果ssh无法成功登录,可以在自己用户的家目录内找到一个隐藏文件.ssh/known_host,找到对应的ssh信息,或者直接删掉这个文件即可

    2.公私钥ssh
      ssh-keygen:生成公钥私钥对,默认会在root目录下有个私钥和公钥
          -t [rsa | dsa]:指定加密算法
          -f '路径':指定存储路径
          -P '密码':为私钥加上密码

    [root@bogon ~]# ssh-keygen -t rsa     #指定rsa算法
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):   #秘钥存放路径
    Enter passphrase (empty for no passphrase):           #指定密码,我这里为空
    Enter same passphrase again:                            #确认密码
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    72:f5:89:28:fd:90:3f:00:16:ea:b1:e5:97:09:b1:72 root@bogon
    The key's randomart image is:
    +--[ RSA 2048]----+
    |      o          |
    |     . +         |
    |    + E   .      |
    |   . O + * o .   |
    |    o + S . o    |
    |       = =       |
    |          +      |
    |           .     |
    |                 |
    +-----------------+
    [root@bogon ~]# ls .ssh/
    id_rsa  id_rsa.pub

    3.ssh-copy-id -i ~/.ssh/id_rsa.pub   root@主机/ip     :将公钥传给对端主机,-i  指定公钥。这时再去登录对端主机就不需要密码了  

    [root@bogon ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.148.113
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@172.17.148.113's password:   #这里需要输入远端对应用户的密码
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@172.17.148.113'"
    and check to make sure that only the key(s) you wanted were added.
    
    [root@bogon ~]# ssh root@172.17.148.113
    Last login: Thu May 31 23:11:36 2018 from 172.17.148.255  #现在登录就不需要密码了
    

    4.scp:主机之间的文件传输
      scp  源文件  root@主机名/ip:存储路径       传送文件到远程主机,中间要加上冒号
      scp  root@主机名/ip:原文件  存储路径    拉取远程主机文件到本地,加冒号

        -r:递归
        -p:保留元属性
        -C:压缩
    5.rsync:用法同scp,会多一次校验,如果校验文件一样就不再复制,只复制不同文件

    6.sftp:配置过ssh秘钥登录的也不用输入密码,直接sftp  ip就可以。get获取文件

    7.xshell生成的秘钥要放在远程主机的家目录下.ssh/authorized_keys里面,如果没有这个文件需要新建,文件夹权限为700,文件权限为600。而且在复制秘钥的时候要注意复制全了。这地方吃了大亏!

    8.开启秘钥认证之后将密码认证关闭就好了
      PasswordAuthentication no

    服务端:

    sshd配置文件
    #空格代表注释信息
    #参数代表可以更改项
    配置文件更改完后需要服务重读配置service sshd reload

    [root@localhost ssh]# cat /etc/ssh/sshd_config 
    #	$OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
    
    # This is the sshd server system-wide configuration file.  See
    # sshd_config(5) for more information.
    
    # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
    
    # The strategy used for options in the default sshd_config shipped with
    # OpenSSH is to specify options with their default value where
    # possible, but leave them commented.  Uncommented options change a
    # default value.
    
    #Port 22                            默认监听端口22,可以更换成其他端口
    #AddressFamily any                  默认监听ipv4和ipv6
    #ListenAddress 0.0.0.0              监听地址
    #ListenAddress ::                   默认服务器上的所有端口地址都监听,如果想监听一个在这里加上ip
    
    # Disable legacy (protocol version 1) support in the server for new
    # installations. In future the default will change to require explicit
    # activation of protocol 1
    Protocol 2                          使用ssh版本2
    
    # HostKey for protocol version 1    
    #HostKey /etc/ssh/ssh_host_key      版本1的密钥
    # HostKeys for protocol version 2
    #HostKey /etc/ssh/ssh_host_rsa_key  版本2的密钥
    #HostKey /etc/ssh/ssh_host_dsa_key  版本2的密钥
    
    # Lifetime and size of ephemeral version 1 server key
    #KeyRegenerationInterval 1h         密钥有效期限
    #ServerKeyBits 1024                 密钥长度
    
    # Logging
    # obsoletes QuietMode and FascistLogging
    #SyslogFacility AUTH                 日志来源默认为认证相关
    SyslogFacility AUTHPRIV              日志来源:认证、权限
    #LogLevel INFO               日志级别
    
    # Authentication:
    
    #LoginGraceTime 2m                   建立连接后,无响应等待时间,默认2分钟
    #PermitRootLogin yes                 是否允许管理员直接登陆,应该关闭root远程直接登录,用普通用户su过去
    #StrictModes yes                     是否使用严格限定模式
    #MaxAuthTries 6                      最多尝试6次
    #MaxSessions 10                      同一会话最大连接数
    
    #RSAAuthentication yes               是否基于rsa认证
    #PubkeyAuthentication yes            是否基于公钥认证
    #AuthorizedKeysFile	.ssh/authorized_keys     key文件放在哪个位置
    #AuthorizedKeysCommand none
    #AuthorizedKeysCommandRunAs nobody
    
    # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
    #RhostsRSAAuthentication no           
    # similar for protocol version 2
    #HostbasedAuthentication no
    # Change to yes if you don't trust ~/.ssh/known_hosts for
    # RhostsRSAAuthentication and HostbasedAuthentication
    #IgnoreUserKnownHosts no              是否忽略读取~/.ssh/known_host文件
    # Don't read the user's ~/.rhosts and ~/.shosts files
    #IgnoreRhosts yes                     是否读取上面那个文件
    
    # To disable tunneled clear text passwords, change to no here!
    #PasswordAuthentication yes         是否开启密码登录
    #PermitEmptyPasswords no            是否允许口令为空的账号登录
    PasswordAuthentication yes          开启密码认证
    
    # Change to no to disable s/key passwords 
    #ChallengeResponseAuthentication yes
    ChallengeResponseAuthentication no   ???
    
    # Kerberos options
    #KerberosAuthentication no           密码是否符合什么要求??
    #KerberosOrLocalPasswd yes           基于本地的/etc/passwd文件校验密码
    #KerberosTicketCleanup yes           用户退出登录后是否清除记录?
    #KerberosGetAFSToken no              
    
    # GSSAPI options
    #GSSAPIAuthentication no
    GSSAPIAuthentication yes
    #GSSAPICleanupCredentials yes
    GSSAPICleanupCredentials yes
    #GSSAPIStrictAcceptorCheck yes
    #GSSAPIKeyExchange no
    
    # 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 no
    UsePAM yes                           基于PAM认证
    
    # Accept locale-related environment variables
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    AcceptEnv XMODIFIERS
    
    #AllowAgentForwarding yes
    #AllowTcpForwarding yes
    #GatewayPorts no
    #X11Forwarding no
    X11Forwarding yes                   
    #X11DisplayOffset 10
    #X11UseLocalhost yes
    #PrintMotd yes                      登陆成功后是否显示/etc/motd文件的内容             
    #PrintLastLog yes                   是否打印上次登陆信息
    #TCPKeepAlive yes                   是否持续连接
    #UseLogin no
    #UsePrivilegeSeparation yes
    #PermitUserEnvironment no
    #Compression delayed
    #ClientAliveInterval 0
    #ClientAliveCountMax 3
    #ShowPatchLevel no
    #UseDNS yes
    #PidFile /var/run/sshd.pid
    #MaxStartups 10                    允许同时有几个还未输入密码的连接
    #PermitTunnel no                    
    #ChrootDirectory none
    
    # no default banner path
    #Banner none                      用户登陆成功后,显示的登录成功信息,格式为Banner  /to/files
    
    # override default of no subsystems
    Subsystem	sftp	/usr/libexec/openssh/sftp-server      启用sftp服务
    
    # Example of overriding settings on a per-user basis
    #Match User anoncvs
    #	X11Forwarding no
    #	AllowTcpForwarding no
    #	ForceCommand cvs server

    #AllowUsers xxx xxx xxx 允许登录的用户 这几个都是本地的用户组
    #AllowGroups   允许登录的组
    #DenyUsers xxx xxx xxx 不予许登录的用户
    #DenyGroups    不允许登录的组
    
    

     

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    内部类概述和访问特点
    权限修饰符 权限
    抽象类和接口作为返回值类型的问题
    抽象类和接口作为形参问题
    jdbc:java数据库连接
    类与类、类与接口、接口与接口的关系
    接口
    抽象类
    多态
    继承中构造方法的关系
  • 原文地址:https://www.cnblogs.com/forlive/p/8934197.html
Copyright © 2011-2022 走看看