我有一个新的专用服务器,目前我通过 ssh 使用用户名和密码访问它。我还没有设置 ssh 密钥。我现在正在研究它。
因此,这是一台刚刚安装了 ubuntu 的新服务器,/etc/ssh/ 目录中已经有 ssh_host_ecdsa_key 和 ssh_host_rsa_key 文件,这正常吗?我也可以看到这些 .pub 文件。
这是否意味着设置服务器的任何人都可以使用这些密钥文件访问它?我希望成为唯一可以登录我的服务器的人。
我并不是一名有经验的 Linux 用户,仍在努力学习。
谢谢
答案1
当您安装 openssh-server 时会自动生成密钥。
要手动制作一组新密钥,
首先,删除旧的 ssh 主机密钥。在服务器上,
sudo rm -f /etc/ssh/ssh_host_*
然后制作新钥匙
sudo dpkg-reconfigure openssh-server
你会看见
创建 SSH2 RSA 密钥;这可能需要一些时间...创建 SSH2 DSA 密钥;这可能需要一些时间...重新启动 OpenBSD 安全 Shell 服务器:sshd。
您的客户登录时可能会收到一条消息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 警告:远程主机标识已更改! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 可能有人正在做一些恶意的事情!有人可能现在正在窃听你(中间人攻击)!RSA 主机密钥也可能刚刚被更改。
...
如果是,让客户端运行
ssh-keygen -R hostname
其中 hostname 是服务器的名称。
答案2
据我了解,您租用的是一些硬件和相关实用程序(电源、网络连接、备份)。托管服务提供商可以物理访问您的硬件。因此,他可以随时读取甚至更改您的数据。您必须相信他们不会利用这种能力。唯一的选择是自己托管。
托管服务提供商通常会提供包括 SSH 服务器在内的基本软件安装(这样您就可以登录 — 根据服务的不同,这可能是您最初登录的唯一方式,也可能不是)。SSH 服务器私钥是在安装软件包时自动生成的openssh-server
,因此您查看时发现它已经存在是正常的。托管服务提供商触发密钥生成这一事实并不意味着他们对您的服务器有任何额外的访问权限。如果您有其他方式登录并手动安装了软件包openssh-server
,那么即使您没有意识到,您也会自己生成密钥。
SSH 服务器密钥验证服务器,而不是用户。它不允许用户登录。允许用户登录的条件是他们的公钥是否列在.ssh/authorized_keys
主目录中的文件中;始终是拥有私钥的一方经过验证,而拥有公钥的一方进行验证。如果攻击者试图让您登录他们的服务器而不是您的服务器,或者试图截距客户端和服务器之间的 SSH 连接。有关更多信息,请阅读公钥加密和SSH 如何使用它。