当您打开路由器上的端口(确切地说是端口22)时,您不仅可以从本地网络内访问SSH服务器,而且可以从世界任何地方访问。
但是,您不想冒险使用弱密码进行身份验证。如果有人通过SSH访问您的计算机,则他们将获得完全的Shell访问。需要明确的是,这不是我们想要的。幸运的是,通过使用基于密钥的身份验证并在服务器上完全禁用密码身份验证,以非常安全的方式设置全局SSH服务器非常容易。
这对我来说有用吗?
人身安全越来越松懈。如果您以私密方式使用服务器,您可能会认为人们根本不了解您的服务器,因此不会尝试破解它-通过隐蔽性实现安全性。那是一个非常错误的假设。由于(大多数)SSH流量是在端口22上传输的,因此攻击者会常规检查端口22在随机IP地址上的可见性,然后进行暴力攻击。这是使僵尸网络用于DDOS攻击的一种方法。
长话短说:如果您通过Internet广播SSH服务器(即转发端口22),那么可以,这是
基于密钥的SSH登录的想法
基于密钥的SSH登录依赖于公共密钥加密的思想。我们需要花太多的时间来解释这些复杂性,但是我们将尝试简单地描绘出幕后发生的事情。
在下面的过程中,您的客户端计算机会生成两个密钥:公钥和私钥。通常的想法是,您可以使用公钥加密数据,但只能使用私钥解密数据。我们将公共密钥放在服务器上,并要求它使用它加密所有传出的通信。这样可以确保只有具有私钥的客户端才能解密和读取数据。
1。安装OpenSSH
首先,我们将使用OpenSSH设置SSH服务器。如果您已经在运行SSH服务器,并且只想知道如何设置基于密钥的身份验证,则可以跳过此步骤。使用您喜欢的数据包管理器来安装OpenSSH服务器应用程序。最简单的方法可能仍然是从终端运行 apt-get 命令。
sudo apt-get install openssh-server
输入密码,确认并等待一分钟以完成安装。恭喜,您现在有了SSH服务器。 (那很容易!)
You can either use the application as-is, or edit /etc/ssh/sshd_config
to configure it. Run the man sshd_config
command in Terminal to get more information. Another great resource to learn more about OpenSSH is the relevant Ubuntu help page.
2。生成密钥
我们将生成一组密钥。运行以下命令(从“ OpenSSH / Keys Ubuntu帮助"页面改编)。
mkdir〜/ .ssh
chmod 700〜/ .ssh
ssh-keygen -t rsa
第一个命令在您的主文件夹中创建一个隐藏目录'.ssh',第二个命令更改该文件夹的访问权限而第三条命令实际上会生成一组RSA密钥。首先会要求您输入保存密钥的位置(保留空白,然后按Enter键保存在默认位置),然后输入第二个密码。
此密码进一步加密了存储在其中的私钥您的计算机,如果您的私钥曾经被盗,实际上可以给您更多时间来保护SSH服务器。请确保选择一个能够记住的密码,因为在尝试使用密钥时必须输入该密码。
3。传输公钥
下一步,您需要将在上一步中生成的公钥传输到SSH服务器计算机。如果您的客户端计算机还运行Linux,则可以通过运行以下命令(用
ssh-copy-id <用户名> @ <主机>
如果您的客户端不支持ssh-copy-id命令,您可以改用以下命令。它有点复杂,但实际上取得了相同的结果。
cat〜/ .ssh / id_rsa.pub | ssh <用户名> @ <主机>“ mkdir〜/ .ssh; cat >>〜/ .ssh / authorized_keys"
系统将要求您输入SSH服务器的用户密码。如果命令执行没有错误,则您的公钥将被复制到服务器。
4。禁用密码身份验证
Notice that your system still isn’t more secure than after step one. Although at least one client is configured to use key-based authentication, this still leaves room for other clients to connect with a password. To finish, we’ll disable password authentication altogether. After this step, only computers that have gone through the above process can connect to your SSH server.
要禁用密码身份验证,请在您喜欢的编辑器中编辑 / etc / ssh / sshd_config
文件。再次,使用终端是编辑受限文件的最简单方法之一。 (我偏爱nano,但您可以使用最喜欢的东西。)
sudo nano / etc / ssh / sshd_config
从文件底部开始大约40行,您会发现
#PasswordAuthentication是
删除数字符号(#)并将设置更改为如下所示,为“ no"。
PasswordAuthentication no
最终文件应如下所示:
保存文件通过按CTRL + X。确认修改和文件名,您就快完成了。只需重新启动SSH服务器以使用这些新设置运行它即可。
sudo restart ssh
您还将注意到您的客户端将不再要求输入如果在服务器上禁用了密码认证,则使用密码短语来解密您的密钥。现在您有了安全的SSH服务器,您打算如何使用它?作为安全文件服务器,远程外壳程序,还是通过SSH转发其他服务?在下面的评论部分中让我们知道!
图片来源:Shutterstock