SSH(SecureShell)是一种协议,使您能够创建经过身份验证的私有启动远程shell。使用此连接,您可以执行远程命令、启动安全文件传输、转发套接字、显示和服务等。在SSH之前,大多数远程管理都是通过telnet完成的,可以公平地说,一旦您可以建立远程会话,您就可以做几乎任何您需要做的事情。该协议的问题在于流量以明文形式未加密传输。使用流量嗅探器查看会话中的所有数据包,包括那些包含用户名和密码的数据包,这没什么大不了的。使用SSH,通信设备之间的会话由于使用非对称密钥而被加密。如今,这比以往任何时候都更加重要,因为所有云服务器都在世界各地进行管理。3SSH配置技巧SSH协议最常见的实现是OpenSSH,它由OpenBSD项目开发,可用于大多数Linux和类Unix操作系统。安装此软件包后,您将拥有一个名为sshd_config的文件,该文件控制服务的大部分行为。默认值通常非常保守,但我倾向于进行一些调整以优化我的SSH体验并保护我的服务器免受未经授权的访问。1.更改默认端口并非所有管理员都记得这一点。即使您更改位置,任何拥有端口扫描器的人都可以发现SSH端口,因此您几乎永远无法摆脱危险,但您可以方便地避免针对您的服务器启动数百个简单脚本。您可以通过从日志中删除大量噪音来帮自己一个忙。在本文中,我在云提供商上使用SSH服务器默认端口TCP22,平均每分钟24次攻击。将端口更改为更高的TCP45678后,每天连接和猜测任何用户名或密码两次。要更改SSH的默认端口,请在您喜欢的文本编辑器中打开/etc/ssh/sshd_config并将端口值从22更改为大于1024的某个数字。这一行可能会被注释,因为22是默认值(因此不会需要在配置中明确说明),所以在保存之前取消注释这一行。端口2112#AddressFamilyany#ListenAddress0.0.0.0#ListenAddress::更改端口并保存文件后,重新启动SSH服务器:linuxmi@linuxmi/home/linuxmi/www.linuxmi.com?sudosystemctlrestartsshd2。没有密码像双因素身份验证这样的方法越来越受欢迎,人们通常开始停止使用密码作为身份验证的手段。OpenSSH可以使用非对称密钥进行身份验证,因此无需记住复杂的密码,更不用说每隔几个月更改一次,也不必担心有人在您建立远程会话时“潜入”。使用SSH密钥可以让您快速安全地登录到远程设备。这通常意味着在服务器本身上处理不正确的用户名和密码的时间更少。登录非常简单。没有密钥,就没有输入——甚至没有提示。要使用此功能,您必须同时配置客户端(您面前的计算机)和服务器(远程计算机)。在客户端计算机上,您必须生成SSH密钥对。这由公钥和私钥组成。顾名思义,一个密钥供您分发到您要登录的服务器,另一个是私有的,必须与任何人共享。使用命令ssh-keygen创建一个新密钥,并使用-t选项指定一个好的、最新的加密库,例如ed25519:linuxmi@linuxmi/home/linuxmi/www.linuxmi.com?ssh-keygen-ted25519Generatingpublic/私有ed25519密钥对。输入保存密钥的文件(/home/linuxmi/.ssh/id_ed25519):在密钥创建期间,系统将提示您命名文件。您可以按Enter接受默认值。如果您将来创建更多键,您可以为每个键指定一个自定义名称,但拥有多个键意味着您指定每次交互使用哪个键,所以现在,只需接受默认值。您还可以为密钥提供密码。这确保即使其他人设法获得您的私钥(这本身不应该发生),他们也无法在没有您的密码的情况下使用它。对于某些密钥,它是一种有用的保护措施,而对于其他密钥(尤其是脚本中使用的密钥)则不是。按Enter键不使用密码短语或创建密码短语(如果您愿意)。要将您的密钥复制到服务器上,请使用ssh-copy-id命令。例如,如果我有一个名为example.com的服务器,那么我可以将我的公钥复制到它:ssh-copy-idlinuxmi@linuxmi.com这将使用您的公钥创建或修改服务器authorized_keys文件在.ssh目录。一旦ssh-copy-id命令确认成功,请尝试从您的计算机登录以验证您是否可以在没有密码的情况下登录(如果您选择使用密码,则可以使用您的密钥密码)。在不使用服务器帐户密码登录服务器后,编辑服务器sshd_config并将PasswordAuthentication设置为no.PasswordAuthenticationnolinuxmi@linuxmi/home/linuxmi/www.linuxmi.com?sudosystemctlrestartsshd重新启动ssh服务以加载新配置:linuxmi@linuxmi/home/linuxmi/www.linuxmi.com?sudosystemctlrestartsshd相关阅读:如何使用无密码SSH密钥登录远程Ubuntu20.04服务器https://www.linuxmi.com/no-password-ssh-ubuntu-20-04.html3。决定谁可以登录大多数发行版不允许root用户通过SSH登录,这确保只有非特权帐户处于活动状态,使用sudo命令根据需要提升权限。这可以防止显着且非常明显的目标(root)免受简单但非常常见的脚本攻击。同样,OpenSSH的一个简单而强大的特性是能够确定哪些用户可以登录到一台机器。要设置哪些用户被授予SSH访问权限,请在您喜欢的文本编辑器中打开sshd_config文件并添加以下行:AllowUserslinuxmikotlinxxvi重新启动SSH服务以加载新的配置选项。这只允许三个用户(linuxmi、kotlin和xxvi)登录或在远程计算机上执行任何操作。最后的想法您可以使用OpenSSH来实现强大而健壮的SSH服务器。这些只是增强安装的三个有用选项。但是,您可以在文件中打开或关闭大量功能和选项,并且sshd_config有许多很棒的应用程序,例如Fail2ban,您可以使用它们来进一步保护SSH服务。
