鸟哥的服务器《十一》SSH服务器

  1. SSH 连接建立过程

    1. 服务器建立公钥文件
    2. 客户端主动连接请求
    3. 服务器传送公钥文件给客户端
    4. 客户端记录/比对服务器的公钥数据及随机计算自己的公私钥
    5. 返回客户端的公钥数据到服务器端
    6. 服务器接收私钥开始双向加解密
      客户端的用户主目录下的~/.ssh/known_hosts中会记录曾经连接过的主机的公钥,用于确认我们已连接上正确的服务器。

    客户端配置文件:/etc/ssh/ssh_config
    [root@CentOS ~]# man sshd_config
    服务器端配置文件:/etc/ssh/sshd_config
    [root@CentOS ~]# man ssh_config

    
    # 如何产生新的服务器的SSH公钥与服务器自己使用的成对私钥
    
    
    # 服务器提懂得公钥与自己的私钥都放在/etc/ssh/ssh_host*,
    
    [root@CentOS ~]# rm /etc/ssh/ssh_host*
    [root@CentOS ~]# /etc/init.d/sshd restart
    [root@CentOS ~]# date; ll /etc/ssh/ssh_host*
    Sat Apr  8 21:14:10 CST 2017
    -rw-------. 1 root root  668 Apr  8 21:09 /etc/ssh/ssh_host_dsa_key
    -rw-r--r--. 1 root root  590 Apr  8 21:09 /etc/ssh/ssh_host_dsa_key.pub
    -rw-------. 1 root root  963 Apr  8 21:09 /etc/ssh/ssh_host_key
    -rw-r--r--. 1 root root  627 Apr  8 21:09 /etc/ssh/ssh_host_key.pub
    -rw-------. 1 root root 1675 Apr  8 21:09 /etc/ssh/ssh_host_rsa_key
    -rw-r--r--. 1 root root  382 Apr  8 21:09 /etc/ssh/ssh_host_rsa_key.pub
    
    
    # 启动 SSH 服务 
    
    [root@CentOS ~]# /etc/init.d/sshd restart
    [root@CentOS ~]# netstat -tlnp | grep ssh
    
    # SSHD  可以同时提供 shell 与 ftp ,而且都是架构在 port 22 上面的
    
    
  2. SSH 客户端连接程序
    1 . SSH:直接登录远程主机的指令

    参数:
    -f:需要配合后面的命令。不登录远程主机直接发送一个命令过去而已

    -o:ConnetcTimeout=秒数:连接等待的秒数,减少等待的时间,

    StrictHostKeyCheckking=[yes|no|ask]:默认是ask,若要让 public key 主动加人 known_hosts,则可以设置为 no 即可。

    -p:如果 sshd 服务启动咋非标准的端口,需使用此项目。

    [root@CentOS ~]# ssh [-f] [-o 参数项目] [-p 非标准端口] [账号@]IP [命令]
    
    
    # 直接连接登录到对方主机的方法
    
    ssh: connect to host 127 port 22: Invalid argument
    [root@CentOS ~]# ssh 127.0.0.1
    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    RSA key fingerprint is 80:01:22:22:11:24:71:69:75:47:b2:56:bf:54:b6:70.
    Please type 'yes' or 'no': yes
    Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
    root@127.0.0.1's password:   #输入root的密码
    Last login: Sat Apr  8 19:49:27 2017 from 192.168.1.109
    [root@CentOS ~]# exit
    logout
    Connection to 127.0.0.1 closed.
    
    
    # 使用 student 账号登录本机
    
    [root@CentOS ~]# ssh student@127.0.0.1
    
    
    # 登录对方主机,执行过命令后立刻离开的方式
    
    [root@CentOS ~]# ssh student@127.0.0.1 find / &> ~/find1.log
    
    
    # 与上题相同,让对方主机自己运行该命令,你立刻回到本地端主机继续工作。
    
    [root@CentOS ~]# ssh -f studnet@127.0.0.1 find / &> ~/find1.log
    
    # 此时你会立刻注销 127.0.0.1,但 find 命令会自己在远程服务器运行
    
    
    # 不加-f 参数,那就会等待对方主机关机完毕再将本地端主机断开连接
    
    
    # 加上-f 参数,会指定指定远程主机自己运行关机,而不需要再等待。
    
    
    
    # 删除 known_hosts 后,重新使用 root 连接到主机,且自动加上公钥记录。
    
    [root@CentOS ~]# rm ~/.ssh/known_hosts 
    [root@CentOS ~]# ssh -o StrictHostKeyChecking=no root@localhost
    

    2 . 服务器公钥记录文件:~/.ssh/hknown_hosts

    
    # 测试服务器重新安装后,假设服务器使用相同的IP,造成相同IP的服务器公钥不同
    
    
    # 删除原有的系统公钥,重新启动 SSH 让你的公钥更新
    
    [root@CentOS ~]# rm /etc/ssh/ssh_host*
    [root@CentOS ~]# /etc/init.d/sshd restart
    Stopping sshd:                                             [  OK  ]
    Generating SSH1 RSA host key:                              [  OK  ]
    Generating SSH2 RSA host key:                              [  OK  ]
    Generating SSH2 DSA host key:                              [  OK  ]
    Starting sshd:                                             [  OK  ]
    
    
    # 然后重新使用下面的方式进行连接操作
    
    [root@CentOS ~]# ssh root@localhost
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    cc:73:b6:f1:0b:15:77:aa:f2:08:18:22:c8:7f:de:cb.
    Please contact your system administrator.
    Add correct host key in /root/.ssh/known_hosts to get rid of this message.
    Offending key in /root/.ssh/known_hosts:1  #冒号后面接的数字就是有问题的数据行号
    RSA host key for localhost has changed and you have requested strict checking.
    Host key verification failed.
    
    # 解决方法:用 vim 删除提示错误信息的第一行(~/.ssh/known_hosts),重新登录ssh ,系统会重新询问要不要加上公钥
    
    
  3. SFTP:模拟 FTP 的文件传输方式
    SSH 是登录远程服务器进行工作,如果想要从远程服务器下载或上传文件,那就必须使用SFTP或SCP。

    [root@CentOS ~]# sftp root@localhost
    Connecting to localhost...
    The authenticity of host 'localhost (127.0.0.1)' can't be established.
    RSA key fingerprint is cc:73:b6:f1:0b:15:77:aa:f2:08:18:22:c8:7f:de:cb.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
    root@localhost's password:  #root的密码
    sftp> 
    
    针对远程服务器主机的行为
    切换目录到 /etc/test 或其他目录cd /etc/test、cd PATH
    列出当前所在目录下的文件名ls dir
    建立目录mkdir directory
    删除目录rmdir directory
    显示当前所在的目录pwd
    更改文件或目录的属组chgrp groupname PATH
    更改文件或目录的属主chown username PATH
    更改文件或目录的权限chmod 644 PATH
    建立链接文件ln oldname newname
    删除文件或目录rm PATH
    更改文件或目录名称rename oldname newname
    离开远程主机exit或者bye或者quit
    切换目录到本机的PATH的当中lcd PATH
    列出当前本机所在目录下的文件名lls
    在本机建立目录lmkdir
    显示当前所在的本机目录lpwd
    将文件由本机上传到远程主机put [本机目录或文件] [远程]
    将文件由远程主机下载回来get [远程目录或文件] [本机]
    
    # 假设localhost 为远程主机,且服务器上有 student 这个用户。想要将本机的 /etc/hosts 上传到 student 用户主目录,并将 student 的.bashrc 复制到本机的 /tmp 底下
    
    [root@CentOS ~]# sftp student@localhost
    Connecting to localhost...
    student@localhost's password: 
    sftp> lls /etc/hosts
    /etc/hosts
    sftp> put /etc/hosts
    Uploading /etc/hosts to /home/student/hosts
    /etc/hosts                                               100%  165     0.2KB/s   00:00    
    sftp> ls
    hosts  
    sftp> ls -a
    .              ..             .bash_logout   .bash_profile  .bashrc        .emacs         
    .gnome2        .mozilla       hosts          
    sftp> lcd /tmp
    sftp> lpwd
    Local working directory: /tmp
    sftp> get /bashrc
    Couldn't stat remote file: No such file or directory
    File "/bashrc" not found.
    sftp> lls -a
    .          keyring-lZcUuf      virtual-root.Bl7Y3G  vmware-root-1021770424
    ..         orbit-gdm           virtual-root.oIRpqV  .X0-lock
    .esd-0         orbit-root          virtual-root.SYzvds  .X11-unix
    fcoemon.dcbd.1877  pulse-6RxxukyDViKG  virtual-root.TxohH3  yum.log
    fcoemon.dcbd.1882  pulse-7uPELLDblazM  vmware-config0
    .ICE-unix      pulse-KkJ8rZQQObou  VMwareDnD
    keyring-JlrKWR     .rnd            vmware-root
    sftp> exit
    
  4. SCP:文件异地直接复制
    参数:
    -p:保留文件原有的权限信息
    -r:复制来源为目录时,可以复制整个目录
    -l:可以限制传输的速率,单位为 kbits/s,例如[-l 800] 代表传输速率100kbytes/s

    [root@CentOS ~]# scp [-pr] [-l 速率] file [账号@]主机:目录名 # 上传
    [root@CentOS ~]# scp [-pr] [-l 速率] [账号@]主机:file 目录名 # 下载
    
    
    # 将本机的 /etc/hosts* 全部复制到127.0.0.1 上面的 student 用户主目录内
    
    [root@CentOS ~]# scp /etc/hosts* student@127.0.0.1:~
    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
    RSA key fingerprint is cc:73:b6:f1:0b:15:77:aa:f2:08:18:22:c8:7f:de:cb.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
    student@127.0.0.1's password: 
    hosts                                                    100%  165     0.2KB/s   00:00    
    hosts.allow                                              100%  370     0.4KB/s   00:00    
    hosts.deny                                               100%  460     0.5KB/s   00:00  
    
    
    # 将 127.0.0.1 这台远程主机的 /etc/bashrc 复制到主机的 /tmp 下面
    
    [root@CentOS ~]# scp student@127.0.0.1:/etc/bashrc /tmp
    student@127.0.0.1's password: 
    bashrc                                                   100% 2620     2.6KB/s   00:00  
    
    # 冒号是重点,后接远程主机的文件,复制目录,可以加上-r
    
    
    
    # 假设本机有个文件名为 /etc/dd_10mb_file,这个文件有10MB这么大。假设你想要上传到 127.0.0.1 的 /tmp 中去,而且你在 127.0.0.1 上面有 root 这个账号得问使用权。但由于带宽宝贵,因此只想要分配 100kbytes 的传输量给此操作,那该使用什么样的命令语法来实现此操作
    
    
    # 由于默认不存在这个文件,因此我们得先使用 dd 来建立一个大文件
    
    [root@CentOS ~]# dd if=/dev/zero of=/root/dd_10mb_file bs=1M count=10
    10+0 records in
    10+0 records out
    10485760 bytes (10 MB) copied, 0.12848 s, 81.6 MB/s
    
    
    # 建立妥当之后,由于是上传数据,观察-l的选项中速率中用的是bit,转换成容量为bytes需要乘以8,因此指令就要这样写
    
    [root@CentOS ~]# scp -l 800 /root/dd_10mb_file root@127.0.0.1:/tmp
    root@127.0.0.1's password: 
    dd_10mb_file                                             100%   10MB  98.5KB/s   01:44    
    
  5. SSH服务器详细配置
    1 . 关于 SSH Server 的整体设置,包含使用的 port ,以及使用的密码算法方式

    
    #Port 22
    
    关于 ssh server 的整体设置,也可以使用多个 port ,即重复使用 port 这个设置项目,想要开放 sshd 在22443,则多加一行 Port 443 即可
    
    
    #Protocol 2
    
    选择 SSH 协议版本,可以是1也可以是2.想要支持旧版V1,需要使用 Protocol 2,1 才行
    
    
    #ListenAddress 0.0.0.0
    
    监听的主机网卡,默认是监听所有接口的 SSH 要求,如果有两个IP,只想要让 192.168.1.100 可以监听 SSHD ,那就可以这样的写:ListenAddress192.168.1.100
    
    #3PidFile /var/run/sshd.pid 
    
    可以放置 SSHD 这个PID 的文件
    
    
    #LoginGraceTime 2m
    
    当连上 SSH Server 之后,会出现输入密码的界面,在该界面中,经过多长时间内没有成功连上 SSH Server就强迫断开连接。默认为秒
    
    
    #Compression delayed
    
    指定何时开始使用压缩数据模式进行传输
    

    2 . 说明主机的 Private Key 放置的文件,默认使用下面的文件即可

    
    # HostKey /etc/ssh/ssh_host_key  
    
    SSH version 1 使用的私钥
    
    # HostKey /etc/ssh/ssh_host_rsa_key 
    
    SSH version 2 使用的 RSA 私钥
    
    # HostKey /etc/ssh/ssh_host_dsa_key 
    
    SSH version 2 使用的 DSA 私钥
    

    3 . 关于登录文件的信息数据放置于 daemon 的名称

    
    # SyslogFacility AUTHPRIV
    
    当有人使用 SSH 登录系统的时候, SSH 会记录信息,这个信息要记录在 Daemon Name 下面,默认是以 AUTH 来设置的,即 /var/log/secure 里面。其他可用的 Daemon Name 为:DAEMON、UAER、 AUTH、LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5
    
    
    # LogLevel INFO
    
    日志的等级
    

    4 . 安全设置项目

    4.1 登录设置bufen
    
    # PermitRootLogin yes
    
    是否允许 root 登录。默认允许
    
    
    # StrictModes yes
    
    是否让 sshd 去检查用户主目录或相关文件的权限数据,当用户的~.ssh/ 权限设置错误时,某些特殊情况下回不许用户登录
    
    
    # PubkeyAuthentication yes
    
    
    # AuthorizedKeysFile .ssh/authorized_keys
    
    是否允许用户自行使用成对的密钥进行登录,仅针对 Version 2,至于自定义的公钥数据就放置在用户目录下的 /ssh/authorized_keys 内
    
    
    # PasswordAuthentication yes
    
    密码验证当然是需要的
    
    
    # PermitEmptyPasswords no
    
    是否允许空密码登录
    
    4.2 认证部分
    
    # RhostsRSAAuthentication no
    
    本机系统不使用 .rhosts,因为仅适用于 .rhosts 太不安全了,所以这里一定要设置为 no
    
    
    # IgnoreRhosts yes
    
    是否取消使用 ~/.ssh/.rhosts 来作为认证,当然选择是
    
    
    # RhostsRSAAuthentication no #
    
    这个选项是专门给 Version 1 用的,使用 rhosts 文件在 /etc/hosts.equiv配合 RSA 加密算法来进行认证,不要使用
    
    
    # HostbasedAuthentication no
    
    这个类似于上面的那个,是给Version 2 使用的
    
    
    # IgnoreUserKnownHosts no
    
    是否忽略用户主目录内的 ~/.ssh/known_hosts 这个文件所记录的主机内容,当然不忽略
    
    
    # ChallengeResponseAuthentication no
    
    允许任何的密码认证所以任何 login.conf 规定的认证方式均可使用,但我们比较喜欢使用 PAM 模块帮忙管理,所以选择 no
    
    
    # UsePAM yes
    
    利用 PAM 模块 管理用户认证有很多好处,可以记录与管理,所以建议我们使用 UsePAM 且 ChallengeResponseAuthentication 设置为 no 
    
    4.3 与 Kerberos 有关的参数设置,因为我们没有 Kerberos 主机,所以下面的不用设置
    
    
    #KerberosAuthentication nobody
    
    
    #KerberosOrLocalPasswd yes
    
    
    #KerberosTicketCleanup yes
    
    
    #KerberosTgtPassing no
    
    
    4.4 下面是有关在X-wondows 下面使用的设置
    
    # X11Forwarding yes
    
    
    # X11DisplayOffset 10 
    
    
    #X11UseLocalhost yes
    
    比较重要的是 X11Forwarding 项目,它可以让窗口的数据通过 SSH 连接来传送
    
    4.5 登录后的项目
    
    #PrintMotd yes
    
    登录后是否打印出 /etc/motd 这个文件的内容,默认是yes,为了安全可以改为 no
    
    
    # PrintLastLog yes
    
    显示上次登录的信息
    
    
    # TCPKeepAlive yes 
    
    当实现连接后,服务器会一直发送 TCP 数据包给客户端,用以判断对方是否一直存在,任何一端掉线,SSH 会立刻知道,而不会出现僵尸进程。如果网络不稳定,也可以改为 no
    
    
    # UsePrivilegeSeparation yes
    
    是否使用权限较低的程序来提供用户操作。我们知道SSHD启动的端口是22,这个是系统进程,是root 身份,那么当student登录后,这个设置值会产生一个属于student的SSHD程序来使用
    
    
    # MaxStartups 10
    
    同事允许几个尚未登录的界面,连上 ssh 但是未输入密码的就是连接界面
    
    4.6 关于用户限制的设置项目
    
    # DenyUsers *
    
    设置被限制用户的名称,如果是全部用户,那就全部阻挡,如果是部分使用者,可以将该账号填入。例如 DenyUsers test
    
    
    # DenyUsers test
    
    仅阻挡几个组
    

    5 . 关于 SFTP 服务与其他的设置项目

    
    # Subsystem sftp /usr/lib/ssh/sftp-server
    
    
    # UseDNS yes
    
    一般来说,为了判断客户端来源是否正常合法,会使用 DNS 去反查客户端的主机名,不过如果是内网互联,这个项目设置为 no 会让连接速度更快
    
  6. 制作不用密码可立即登录的 SSH 用户
    既然 SSH 可以使用密钥系统来对比数据,并且提供用户数据的加密功能,那么可不可能利用这个Key就提供用户自己进入主机,而不需要输入密码呢?

    步骤:
    客户端建立两把钥匙。利用命令 ssh-keygen
    客户端放置好私钥文件。将私钥放在客户端的用户主目录。 $HOME/.SSH/
    将公钥放置到服务器端的正确目录与文件中。放在用户的主目录内的 .ssh/ 里面
    1 . 客户端建立两把钥匙

    
    # 在客户端上面以kevin的身份建立两把钥匙,如不指定算法,默认 RSA 
    
    [kevin@CentOS ~]$ ssh-keygen [-t rsa|dsa]
    [kevin@CentOS ~]$ ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/kevin/.ssh/id_rsa): #回车键
    Enter passphrase (empty for no passphrase):  #回车键
    Enter same passphrase again:  #回车键
    Your identification has been saved in /home/kevin/.ssh/id_rsa. #私钥文件
    Your public key has been saved in /home/kevin/.ssh/id_rsa.pub. #公钥文件
    The key fingerprint is: 
    50:ff:ae:58:8c:33:d5:a4:de:42:37:1f:13:c1:00:69 kevin@CentOS.virtual
    
    [kevin@CentOS ~]$ ls -ld ~/.ssh; ls -l ~/.ssh
    drwx------. 2 kevin kevin 4096 Apr  9 06:52 /home/kevin/.ssh
    total 8
    -rw-------. 1 kevin kevin 1675 Apr  9 06:52 id_rsa #私钥文件
    -rw-r--r--. 1 kevin kevin  402 Apr  9 06:52 id_rsa.pub #公钥文件
    

    2 . 将公钥文件数据上传到服务器上

    [kevin@CentOS ~]$ scp ~/.ssh/id_rsa.pub root@192.168.1.112:~
    The authenticity of host '192.168.1.112 (192.168.1.112)' can't be established.
    RSA key fingerprint is b8:b2:70:cd:62:01:39:22:d8:1c:7d:8e:e3:2e:db:fa.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.1.112' (RSA) to the list of known hosts.
    root@192.168.1.112's password: 
    id_rsa.pub                                            100%  402     0.4KB/s   00:00 
    

    3 . 将公钥放置到服务器端的正确目录与文件名

    
    # 1. 建立 ~/.ssh 文件,注意权限需要为700
    
    [root@CentOS ~]# ls -ld .ssh
    
    
    # 不存在则新建
    
    [root@CentOS ~]# mkdir .ssh; chmod 700 .ssh
    [root@CentOS ~]# ls -ld .ssh
    
    
    # 2 . 将公钥文件内的数据使用 cat 转存到 authorized_keys 内
    
    [root@CentOS ~]# ls -l *pub
    -rw-r--r--. 1 root root 402 Apr  9 18:58 id_rsa.pub
    
    [root@CentOS ~]# cat id_rsa.pub >> .ssh/authorized_keys
    [root@CentOS ~]# chmod 644 .ssh/authorized_keys 
    [root@CentOS ~]# ls -l .ssh
    total 4
    -rw-r--r--. 1 root root 402 Apr  9 19:03 authorized_keys
    

    客户端必须制作出公钥和私钥者这两把密钥,且私钥需要放到 ~/.ssh/ 内。
    服务器必须要有公钥,且反知道用户主目录下的 ~/.ssh/authorized_keys, 同时目录的权限(.ssh/)必须是700而文件权限必须为644,同时文件的属主与数组都必须与该账号吻合才行

  7. 简易安全设置
    1 . 服务器软件本身的设置强化:/etc/ssh/sshd_config
    禁止 root 这个账号使用 SSHD 的服务
    禁止 nossh 这个组的用户使用 SSHD 的服务
    禁止 testssh 这个用户使用 SSHD 的服务

    
    # 先观察一下所需要的账号是否存在
    
    [root@CentOS ~]# for user in sshnot1 sshnot2 sshnot3 testssh studnet; do id $user | cut -d ' ' -f1-3 ; done
    
    
    # 修改 sshd_config 并且重新启动 sshd 
    
    PermitRootLogin no #39行
    DenyGroups nossh
    DenyUsers testssh
    [root@CentOS ~]# /etc/init.d/sshd restart
    
    
    # 测试与观察相关账号的登录情况
    
    [root@CentOS ~]# ssh root@localhost
    
    [root@CentOS ~]# ssh sshnot1@localhost 
    [root@CentOS ~]# tail /var/log/secure
    
    [root@CentOS ~]# ssh testssh@localhost
    [root@CentOS ~]# tail /var/log/secure
    

    2 . /etc/hosts.allow 及 /etc/hosts.deny

    [root@CentOS ~]# vim /etc/hosts.allow 
    sshd : 127.0.0.1  192.168.1.0/255.255.255.0  192.168.100.0/255.255.255.0
    
    [root@CentOS ~]# vim /etc/hosts.deny
    sshd : ALL
    

    3 . iptables 数据包过滤防火墙

    [root@CentOS ~]# vim /usr/local/virus/iptables/iptables.allow
    iptables -A INPUT -i $EXTIF -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -i $EXTIF -s 192.168.100.0/24 -p tcp --dport 22 -j ACCEPT
    
    [root@CentOS ~]# vim /usr/local/virus/iptables/iptables.rule
    
  8. 基于密钥的认证

    基于密钥的认证:
    
    一台主机为客户端(基于某个用户实现):
    1、生成一对密钥
    ssh-keygen 
        -t {rsa|dsa}
        -f /path/to/keyfile
        -N 'password'
    
    2、将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中
    使用文件传输工具传输(ssh-copy-id, scp)
    ssh-copy-id -i /path/to/pubkey USERNAME@REMOTE_HOST
    
    3、测试登录
    
    
    # 本地用户生成密钥
    
    [kevin@CentOS ~]$ man ssh-keygen
    
    [kevin@CentOS ~]$ ssh-keygen -t rsa       #默认会保存在用户家目录下的.ssh下,也可以手动指定
    [kevin@CentOS ~]$ ll -a
    drwx------. 2 kevin kevin 4096 Apr 21 13:27 .ssh        #注意目录权限
    
    
    # 删除密钥,重新生成
    
    [kevin@CentOS ~]$ rm -rf .ssh/*
    [kevin@CentOS ~]$ ssh-keygen -t rsa -f .ssh/id_rsa
    
    
    # 将公钥传输至服务器端
    
    [kevin@CentOS ~]$ ssh-copy-id -i .ssh/id_rsa root@192.168.1.109
    
    
  9. 基于密钥认证

    
    # 创建密钥文件
    
    Xshell --> 工具 --> 新建用户密钥生成向导 --> RSA 1024 --> 输入密码 --> 导出到本地(公钥文件) --> 传到 linux中root根目录即可( id_rsa_1024.pub)  --> 追加到/root
    [root@CentOS ~]# cat id_rsa_1024.pub >> .ssh/authorized_keys
    
    
    # 退出登录,重新连接
    
    ssh 192.168.1.109
    输入用户root
    密码选择公钥,选择文件但不用输入
    
  10. 总结

    总结:
    1、密码应该经常换且足够复杂;
    2、使用非默认端口;
    3、限制登录客户地址;
    4、禁止管理直接登录;
    5、仅允许有限制用户登录;
    6、使用基于密钥的认证;
    7、禁止使用版本1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值