来自另一台服务器的用户将他的公钥交给我,并要求我将这个公钥安装到我的服务器中,以便他可以连接到我的服务器。做了一些研究,我必须创建一个名为的目录,.ssh
并将我的用户公钥粘贴到记事本中,并将此文本文件保存到.ssh
目录中。我的问题是,我的研究是否正确,如果正确,我在哪里以及如何创建此.ssh
目录和密钥文件,它是文本文件格式吗?我必须将任何信息(例如我的密钥)传递给用户吗?我使用的是 Windows Server 2012。
答案1
公钥必须放入
authorized_keys
文件中(而不仅仅是一些您可以将一个文本文件(英语:text file)保存在.ssh
用户主目录的子文件夹中。公钥条目必须具有正确的格式,例如:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAir2cIHsAFg8QzLF6Yb... some optional comment
该
authorized_keys
文件必须使用 *nix 行尾,这是记事本无法做到的(因此请确保您的 SFTP/FTP 客户端使用 ASCII 传输模式来转换行尾)文件
.ssh
夹需要有700
权限,authorized_keys
需要有600
权限。
互联网上有无数的指南涵盖了上述内容。
例如,请参阅我的指南在 OpenSSH 中设置 SSH 公钥认证。
如果用户已经是您服务器上的用户(具有密码[或其他]身份验证功能),他/她可以自行设置公钥。
- 在 *nix 机器(或其他有 OpenSSH 的机器)上,可能包括 Windows), 您可以使用
ssh-copy-id
脚本。 - 在 Windows 机器上,你可以使用(我的)WinSCP,将公钥安装到服务器功能。
另请参阅我的回答设置从 Windows 到 Linux 服务器的公钥认证(ppk 私钥)。
您应该向用户提供服务器公共主机密钥的副本,以便用户可以在第一次连接时验证它(它与身份验证是分开的,其余问题与此有关)。尽管很多用户只是盲目地接受主机密钥。