配置SSH服务以使用证书登录Linux服务器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

配置SSH服务以使用证书登录Linux服务器发表于2015-10-23作者HaoxianZeng更新于2016-03-090通过SSH(SecureShell)登录Linux服务器常见的认证方式有密码和证书两种。从安全角度考虑,大家都推荐用证书登录。第一次在服务器上配置SSH使用证书登录,并制作证书然后登录成功还是费了不少力气。配置证书登录SSH的过程还挺复杂。记录配置SSH证书并从Windows系统中使用PuTTY和FileZilla登录的操作过程以方便下次使用。目录Contents0.配置SSH证书登录的流程1.客户端生成私钥/公钥Linux/Mac命令行方式使用Windows下PuTTY生成密钥对2.SSH服务器配置3.在服务器上加入用户公钥4.用户使用证书登录5.附录5.1SSH配置参数详解5.2OTP5.3参考资料(文中已有链接的除外)0.配置SSH证书登录的流程¶1.配置服务器上的SSH为证书登录模式。2.客户端生成证书:私钥(privatekey)和公钥(pubkey)。私钥留在客户端,需要安全保存:一般会设置一个密码,可能还需要加密密钥文件。如果对自己电脑里存的文件的安全有信心,就不信要设置密码了。而如果设置了密码,以后每次使用此私钥登录服务器的时候都需要先输入密码解开私钥。(有时候为了避免麻烦,而又不是对这种安全性有特别高的要求就*懒得*设置密码了。)公钥上传并添加到服务器上SSH配置指定的文件中,使之被信任。提示:虽然同一对私钥/公钥可重复用于登录不同的服务器,但是基于安全考虑,一般需要针对不同服务器单独生成各自的私钥/公钥。个人来讲,在Windows下使用SSH登录服务器主要涉及到两种特殊软件:PuTTY和FileZilla。如果要使用FileZilla的sftp登录服务器,。新版本已经在新建服务器那里增加了使用key登录的选项(文件-站点管理器,新建站点时协议选SFTP,登录类型选证书登录,然后点击右边的“浏览”选择自己的私钥即可(下文中的id_rsa))。如果使用PuTTY登录服务器,需要在putty的defaultsettings-ssh-Auth中加上需要的私钥并保存,然后再登录。1.客户端生成私钥/公钥¶使用私钥/公钥(密钥对,都是成对的)就需要考虑密钥本身的安全性,除了妥善保管之外,还有加密及验证环节的可靠性。根据这里的介绍(SecureSecureShell),目前可以安全的选择ed25519和rsa两种加密系统。当然对应的SSH服务器也要配置使用这两种密钥交换系统。LINUX/MAC命令行方式¶公钥/私钥的生成是在客户端(需要用来登录服务器的用户自己的电脑),这样可以保证生成的私钥不在网络上传输。所以,在客户端,如果是Linux系统,运行以下两条中的任一指令(推荐第二条),#ssh-keygen-ted25519-o-a100-CYourcommenthere#ssh-keygen-trsa-b4096-o-a100-CYourcommenthere以生成相应格式的证书。按提示操作即可。其中-t表示证书密钥类型;-C表示给证书添加一句注释的话,一般用于标记证书所有者和用途,免得回头自己都忘了哪个证书是干什么的了。提示的passphrase就是用来保护私钥的密码了,需要用一个包含特殊字符并有一定长度的密码,当然还得记住,否则就没法用它了。如果*不想设置密码短语*,就直接连续敲回车两次。默认情况下,生成的密钥被保存在当前用户目录的.ssh目录下,两个文件:id_rsa是私钥,id_rsa.pub是公钥。建议给不同的证书单独设置不同的文件名,以方便后续的管理。这里作为例子就不改名字了,下面好叙述。使用WINDOWS下PUTTY生成密钥对¶如果在Windows下,可以使用PuTTY相关的一个配套的PuTTYgen(下载地址)来生成密钥对。最新的PuTTY是0.65版(还是Beta阶段)。双击PuTTYgen运行会打开窗口。下面可以选择加密方式,默认是SSH-2RSA即rsa方式;旁边有位数可以选择,默认是2048位(现在大家已经开始使用4096位的了)。点击中间靠右侧的Generate,然后在该窗口的上半部分空白处随意晃动鼠标,就能看到证书在根据这些随机的点产生,等进度条走完,密钥对产生,就到了下面的界面。使用PuTTYgen产生密钥/公钥图中,单击Savepublickey可以将公钥保存为文件(保存前最好将框框里面的文本文件复制出来放到一个文本文件中,后面会用到)。当然保存的公钥文件也可以使用Windows的记事本或Notepad++之类的文本编辑器打开。上面保存的文件打开后内容是这个样子,----BEGINSSH2PUBLICKEY----Comment:rsa-key-20151019AAAAB3NzaC1yc2EAAAABJQAAAQEAmmEZDOTuPdrARNCZjWyZfZcDRHm4oRjZN6fLWG8eNh1KhNJu1pPtFvhACaWVE0vBfPS/6UzDeClNk1DScMmYVsqgsqwrjazcS4eeNFT1A9B4MeppI2N7pa5Gsvq/iD3cQpzAmGv8IZl6Aqoujz0429+dCoeUW6L2Mu490+0A6MWhEh/GQWV/VpYwf/J1KxAWgGuNpeMONN9el2+BiCwJdhmKwQaXNcmdqVvZWdm+A//+1GWJqydDWmFgYj8yXOGIHNlS0bNtw0Mrq+GrXCGiJuPWEXNDIlVA5Pgnw+6Xd0zv1qgeGe1CpjZzV2e/bTlG9AHLumJ/uWhp7ZuMwsBq6Q==----ENDSSH2PUBLICKEY----而前面复制出来的公钥应该是这个样子(这才是实际的公钥,后面要使用的就是下面这段字符,而不是上面的),ssh-rsaAAAAB3NzaC1yc2EAAAABJQAAAQEAmmEZDOTuPdrARNCZjWyZfZcDRHm4oRjZN6fLWG8eNh1KhNJu1pPtFvhACaWVE0vBfPS/6UzDeClNk1DScMmYVsqgsqwrjazcS4eeNFT1A9B4MeppI2N7pa5Gsvq/iD3cQpzAmGv8IZl6Aqoujz0429+dCoeUW6L2Mu490+0A6MWhEh/GQWV/VpYwf/J1KxAWgGuNpeMONN9el2+BiCwJdhmKwQaXNcmdqVvZWdm+A//+1GWJqydDWmFgYj8yXOGIHNlS0bNtw0Mrq+GrXCGiJuPWEXNDIlVA5Pgnw+6Xd0zv1qgeGe1CpjZzV2e/bTlG9AHLumJ/uWhp7ZuMwsBq6Q==rsa-key-20151019所以如果前面没有复制出来的话就要打开保存的公钥自己组合一下了。其中,Keycomment是用来给这个公钥做个注释的,比如上面的rsa-key-20151019就是。这个东西不是公钥本身的一部分,可以根据需要修改,比如用自己的邮箱地址替换。保存密钥(Saveprivatekey)前可输入或者不输入密码短语(Keypassphrase)。当然安全的做法是使用。Keypassphrase和它下面的Confirmpassphrase就是前面提到的保护私钥的密码短语了。最好是大小写字母混合数字,并加入特殊字符如!£$%^等。如果不输入密码短语而直接保存私钥,会有让确认的提示。注意是“短语”,也就是可以是一串长长的话。但是使用现成的文本可能会在暴力尝试下被破解。2.SSH服务器配置¶服务器上一般使用OpenSSH提供SSH登录服务。CentOS(其他Linux发行版可能会有不同)上的服务器配置文件保存在下面这个文件里,/etc/ssh/sshd_config修改此文件,#vim/etc/ssh/sshd_config配置示例(这里拆成行或块来说明,按顺序往下找即可):注:SSH默认的配置文件里很多行都被注释掉了(即不起作用,标志是行首有个#号),希望让它起作用的话就要把改行行首的#删除。a.端口端口,默认22,建议自定义,比如2222、1234、54321等(一般高于2000而不能超过65555),Port2222特别注意:这里修改端口后*重启sshd服务之后*原来的22端口就不能连接了,所以在开启了防火墙(比如CentOS中的iptables或FirewallD)的情况下,一定要把新端口添加了允许访问的列表里,免得将自己锁在了服务器外面!!!参考这里,在Linux命令行输入的指令为:#firewall-cmd--zone=public--add-port=2222/tcp--permanentb.协议下面继续修改sshd配置。如果没有特殊原因,不要用协议1,所以启用下面的行,Protocol2c.登录控制禁止Root账户登录,PermitRootLoginno不允许空密码登录,默认已经是no,PermitEmptyPasswordsno允许SSH登录的用户名/用户组。可以同时使用,也可以仅使用下面一种。#AllowUsersuser1user2AllowGroupsssh-users使用用户组的好处是在更换用户、添加/删除用户的时候都需要维护此配置。所以建议用用户组来管理,有新用户产生,直接将它添加到这个附加用户组中就可以了。但是,如果这个服务器只有自己一个人用,那还是直接允许自己用的那个帐户就好了。将用户添加到附加用户组参考这里。简单说就是,#groupaddssh-user#usermod-a-Gssh-userusername不让sshd去检查用户目录或某些重要档案的权限数据,这是为了防止用户将某些重要档案的权限设错。例如用户的~.ssh/权限设错时,某些特殊情况下会不许用户登录。StrictModesnod.允许密钥登录允许用户自行使用成对的密钥系统登录服务器,这里仅针对协议版本2。用户自己生成的公钥数据就放置于相应的(服务器上该用户自己的)用户目录(例如,/home/luser1)下的.ssh/authorized_keys文件里面,RSAAuthenticationyesPubkeyAuthenticationyesAuthorizedKeysFile%h/.ssh/authorized_keyse.访问安全加固(可暂时忽略此项)保存protocolversion2对应的服务器自己的KEY,不同类型的key保存到不同的文件中(这里只启用前面提到的两种),KexAlgorithmscurve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256HostKey/etc/ssh/ssh_host_ed25519_keyHostKey/etc/ssh/ssh_host_rsa_key因为启用了diffie-hellman-group-exchange-sha256这个密钥交换算法,还需要修改/etc/ssh/moduli以增强其安全性。如果有这个文件(一般安装时都会有的),将此文件中的所有第5列数值小于2000的行删除。因为行比较多,用awk指令自动删除比较方便,#awk'$52000'/etc/ssh/moduli${HOME}/moduli#wc-l${HOME}/moduli#确保删除之后该文件中还有内容,看此指令输出的数字大于0#mv${HOME}/moduli/etc/ssh/moduli如果没有这个文件,就生成一个,#ssh-keygen-G/etc/ssh/moduli.all-b4096#ssh-keygen-T/etc/ssh/moduli.safe-f/etc/ssh/moduli.all#mv/etc/ssh/moduli.safe/etc/ssh/moduli#rm/etc/ssh/moduli.all生成这个可能需要的时间比

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功