Centos7之修改ssh端口和秘钥登录
一、修改SSH默认端口22
1、修改/etc/ssh/sshd_config文件中的Port参数,首先将原来#Port=22这行的#号去掉,另起一行同样键入Port=2345。然后保存退出。
2、systemctl restart sshd服务,然后测试2345端口是否开启,一定要先验证新端口是否可以连接(这里如果不行的话,检查SELinux设置、iptables防火墙设置、firewalld防火墙设置,最直接的方法是直接关闭)
3、最后如果新端口2345能够顺利连接,就可以再去/etc/ssh/sshd_config配置文件中,将Port=22端口加上#号注释掉,别忘记了最后重启一下sshd服务生效。
注意:过程中可以使用netstat -nultp查看端口开放状态,每一步都要验证,避免连接失败,造成不必要的麻烦。
二、使用Xshell进行秘钥登录Centos7操作系统
大概步骤:
1、首先需要在被连接的Linux服务器上修改/etc/ssh/sshd_config配置文件中的参数,修改完以后,先不要重启sshd服务。
PasswordAuthentication no # 不允许密码验证登录 PubkeyAuthentication yes # 允许公钥验证登录 AuthorizedKeysFile .ssh/id_rsa.pub # 指定公钥文件路径
2、在Xshell端口生成一对秘钥,将公钥复制粘贴到Linux服务器的vim /root/.ssh/authorized_keys中。
如果你要登录用户家目录下没有.ssh目录,可以通过ssh-keygen命令生成服务端自己的密钥方式让系统自动创建目录,下一步,下一步即可。
上图中在下拉框中已经看到了公钥,然后全选复制,最后将粘贴到Linux服务器的vim /root/.ssh/authorized_keys文件中。这里需要注意,如果上一步红色字体标注的(Linux服务上未执行ssh-keygen命令话,就找不到/root/.ssh/这个路径,如果没有,可以先执行这个命令。)
然后给这个文件修改权限为600(如果/root/.ssh/下没有authorized_keys文件,可以手动创建一个。)
chmod 600 /root/.ssh/authorized_keys
最后,重点是所有设置都完成以后,记得要重启sshd服务。
systemctl restart sshd
3、连接测试
有时候这里输入完密码以后会提示连接失败,再多试试,密码容易输错。
提醒:
1、如果要改回原来用密码登陆的样子,只改sshd_config配置文件成原样还不够,需要把authorized_keys文件清空再重启sshd服务。
扩展
1、为了安全起见,一般情况下都不会开放22端口,哪怕是内网,除非真的没吃过亏,或者公司安全工程师没有找过你。
2、如果一台服务器经常在一台电脑上需要登录,建议尽量使用秘钥登录,这样等于又上了一把锁。
3、还有一种例外比较常见,就是先使用root账户创建一个普通用户,再在/etc/ssh/sshd_config下修改PermitRootLogin参数为no(不允许root直接登录),这样的好处就在于普通用户不会像root用户权限那么大,要连续知道两个用户的名字和密码更难,安全等级更完善。
步骤很简单:
1、新建一个普通账户,例如Mr.lei,记得一定要使用passwd命令给新建的这个用户加上密码,否则无法登陆。
2、修改/etc/ssh/sshd_config配置文件中的PermitRootLogin参数,先去除前面的#号键,然后再将后面的yes改成no,保存退出。
3、重启sshd服务,使用客户端尝试登陆即可。