网站建设对公司有什么好处,网络运营者应当按照网络安全等级保护制度的要求,做网站投广告攻略,成品短视频代码推荐大全服务器#xff1a;
客户端#xff1a; 在下面不再说明服务器和客户端。
1.修改ssh默认端口
是在服务器中设置。
该设置涉及三部分#xff1a;sshd配置文件修改/增加新端口、Selinux添加新端口、Firewall开放新端口。
vim /etc/ssh/sshd.config#xff0c;找到#Port行
客户端 在下面不再说明服务器和客户端。
1.修改ssh默认端口
是在服务器中设置。
该设置涉及三部分sshd配置文件修改/增加新端口、Selinux添加新端口、Firewall开放新端口。
vim /etc/ssh/sshd.config找到#Port行 默认Port策略是22号取消注释就可以修改端口值也可以保留22号端口再添加一行写其他端口。添加的端口号建议在10000-65535之间防止和系统端口冲突。例如我们保留端口22号的同时添加32222端口。如果需要将22端口修改为32222只需要将22端口注释即可。 当修改完之后需要重启服务systemctl restart sshd 查看sshd的状态发现错误信息端口32222是没有许可的。
原因是Selinux并不知道ssh的端口出现了改变 可以使用semanage工具对Selinux进行设置。 查询系统是否有该工具如果没有安装则进行安装。 查看当前端口可以使用ss等于netstat我们使用semanage port -l命令 那我们将ssh的新端口添加进去 此时还未生效我们需要重启sshd服务使得新端口生效。以修改之后的端口进行远程登入如果没有指定用户名则表示使用与当前本地用户相同的用户名登录远程服务器servera。出现错误no route to host原因是防火墙的对应端口32222没打开 防火墙端口查看和设置如下 上述就完成了添加一个ssh端口登入的操作
如果我们仅仅想修改掉默认端口22为32222那我们在/etc/ssh/sshd.config配置文件中删除22端口这一行即可。并且重启可以看到sshd进程只运行在新端口上了。
现在只能新端口登入了默认端口已经不能登入。 防火墙和Selinux去掉加入的端口 2.禁止root登入和限制密码试错的最大次数
是在服务器中设置。
修改/etc/ssh/sshd.config文件中的以下位置 OpenSSH服务器使用/etc/ssh/sshd_config配置文件中的PermitRootLoain配置设置以允许或禁止用户以root身份登录系统。当PermitRootLogin参数设为yes时这也是默认设置用户被允许以root身份登录系统。要防止这种情况可将该值设为no。或者若要禁止基干密码的身份验证但允许对root执行基于私钥的身份验证可将PermitRootLogin参数设为without-password。 OpenSSH服务器使用/etc/ssh/sshd_config配置文件中的PasswordAuthentication参数用于控制用户在登录系统时能否使用基于密码的身份验证。Password Authentication参数的默认值是yes这会使SSH服务器允许用户在登录系统时使用基于密码的身份验证。PasswordAuthentication的值为no时禁止用户使用基于密码的身份验证。 请记住每当您更改/etc/ssh/sshd_config文件时都必须重新加载sshd服务让更改生效即systemctl reload sshd。 请记住如果您为ssh关闭基于密码的身份验证则需要有一种办法来确保用户在远程服务器上的 ~/.ssh/authorized_keys文件中填充有公钥以便可以登录。 3.免密登入
客户端ssh登入服务器的形式一般来说是交互式的需要输入密码这对于脚本执行很不友好。有时候脚本执行需要免密直接登入不同的服务器那么免密设置就非常有必要了。
客户端root用户目录中的/root/.ssh文件夹在无任何ssh远程登入服务器的时候是空的。使用ssh登入服务器就会提示连接后会将服务器的指纹永久的加入known_hosts文件中。因此我们从该文件就可以看出客户端曾连过多少台服务器。并且我们可以知道这种方式登入不管登入几次都是需要交互式的输入服务器账号对应的密码登入。 客户端中known_hosts文件的公钥信息来自于服务器中/etc/ssh/ssh_host_*.pub文件。例如上面公钥信息ecdsa加密方式那么对应的就是服务器的ssh_host_ecdsa_key.pub文件如下图
基于密钥的身份甚至免密登入
/etc/ssh/目录下面的密钥对是系统自动生成提供给客户端登入的。/root/.ssh/目录下面的密钥对是用户自己手动生成的目的是为了基于密钥的身份甚至免密登入。
客户端执行密钥生成命令ssh-keygen -t rsa我们选择默认的存储位置可以选择密钥的密码也可以不设置直接回车生成rsa加密方式的密钥对默认保存在/root/.ssh/文件夹中公钥文件以pub结尾。
首先查看服务器用户目录下面的.ssh文件夹可以看到文件夹内没有authorized文件 我们在客户端中执行命令ssh-copy-id rootservera 在可以使用基于密钥的身份验证之前需要将公钥复制到服务器目标系统上。ssh-copy-id命令可将 SSH密钥对的公钥复制到目标系统。如果在运行ssh-copy-id时省略了公钥文件的路径它会使用默认的/home/user/.ssh/id_rsa.pub文件。这里我们是省略了指定公钥文件的路径。 这个时候我们就可以基于密钥的身份登入服务器ssh servera我们还是需要交互式的输入自己创建密钥对时设置的密码。注意这里发生了本质区别以前登入需要输入服务器端的用户密码密码由服务器拥有者可以随意改动现在登入需要输入的是客户端拥有者的密钥密码由自己控制。 将公钥成功传输到远程系统后我们可以使用对应的私钥对远程系统进行身份验证同时通过SSH登录远程系统。如果在运行ssh命令时省略了私钥文件的路径它会使用默认的/home/user/.ssh/id_rsa文件。这里我们省略了指定私钥文件的路径。
如果我们要达到真正的免密免客户端自己的密钥密码有两种方式 方式一创建密钥对的时候不设置密钥密码这样在登入的时候也不会出现交互式的让我们输入密钥密码。但是有安全问题在这种情况下任何拥有您私钼文件的人都可以使用它进行服务器的身份验证如果您设置了密码则在使用私钥进行身份验证时需要输入此密语。 方式二已经设置了密钥密码通常必须输入密语才能使用私钥进行身份验证。但是我们可以使用名为ssh-agent的程序临时将密语缓存到内存中。之后当我们使用SSH通过私钥登录另一个系统时ssh-agent会自动为我们提供密码。这样做不仅方便而且能减少他人“肩窥”您密码输入的机会从而提高安全性。
方式二具体操作 运行eval $(ssh-agent)命令将启动ssh-agent并自动为该shell会话设置这些环境变量。此外它还显示ssh-agent进程的PID。 一旦ssh-agent开始运行我们需要告诉它私钥密语或密钥。运行ssh-add命令会添加分别来自/home/user/.ssh/id_rsa(默认)文件的私钥。。如果我们使用的是默认文件之外的私钥文件必须将-i 选项用于ssh命令来指定私钥文件的路径。 当我们注销启动了ssh-agent的会话时将退出进程并且您的私钥密语也将从内存中清除。