我正在使用本指南设置公钥认证:https://help.ubuntu.com/community/SSH/OpenSSH/Keys。
文档中谈到了该文件,但我的主目录中~/.ssh/authorized_keys
没有文件。~/.ssh/authorized_keys
这个文件应该自动生成吗?
这Maverick sshd 手册页没有指定该文件是否在安装 OpenSSH 时创建,或者是否应该手动创建该文件。
我只是想知道在我自己创建这个文件之前,没有这个文件是否正常。
答案1
~/.ssh/authorized_keys
是每个用户的文件。安装 unix 程序永远不会写入用户的主目录。因此默认情况下该文件不存在(与空文件具有相同的效果)。
如果你在运行 OpenSSH 的客户端上生成密钥,请使用ssh-copy-id
[如所述] 将公钥传输到服务器,然后使用一次密码登录服务器。
如果您通过其他方法生成密钥,请将id_rsa.pub
生成密钥的文件复制到~/.ssh/authorized_keys
服务器上(~/.ssh
如有必要,请创建目录)。确保您的主目录、~/.ssh
和~/.ssh/authorized_keys
仅对用户可写(无组或其他写入权限)。如果您想授权多个密钥,只需将它们连接起来~/.ssh/authorized_keys
(这样~/.ssh/authorized_keys
每行都有一个公钥)。
如果您使用 OpenSSH 以外的其他程序来生成密钥,则可能需要将公钥转换为 OpenSSH 格式。例如,在 PuTTY 中,使用'用于粘贴到 authorized_keys 文件中的公钥'。
答案2
从该页面开始:
私钥保存在你登录的计算机上,而公钥存储在 .ssh/authorized_keys 文件中在所有要登录的计算机上。
使用 创建密钥文件时ssh-keygen
,您将获得名为id_rsa
和 的文件id_rsa.pub
。第一个是您的私钥(可能受密码保护),应始终保密。您是客户。
后者是你的公钥,可以提供给对方,服务器。服务器可以允许多个公钥。密钥文件是纯文本文件,因此您可以使用任何文本编辑器打开它们。公钥文件只有一行,应将此行添加~/.ssh/authorized_keys
到服务器。
下面的私钥和公钥是使用 生成的ssh-keygen -t rsa
。上一个命令创建了文件~/.ssh/id_rsa
和~/.ssh/id_rsa.pub
。
私钥文件~/.ssh/id_rsa
如下所示:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,6D5AD2DF5464E16B4E92E81D095A5E7E
NbCawtGTPOfveFHvV93uw5/veo/fAmbZEcitpNlq/rPEy8ZLo7/0MltFDUupe6dI
...23 lines omitted...
eiau+K6IAbhp84/6ewXPVJ6JbfeS9vyOqkcPaZDlQ3rvbAxU9dfTptc/ZWxVoCDg
-----END RSA PRIVATE KEY-----
对应的公钥~/.ssh/id_rsa.pub
如下:
ssh-rsa AAAAB3NzaC1yc2EA[some chars omitted]X3aKKB6lOyr0v user@host
第一个字是ssh-rsa
(对于 RSA 密钥)或ssh-dss
(对于 DSA 密钥)。第二部分(AAAAB3...r0v
)是实际数据。user@host
只是一条注释,可以替换为任何内容,例如sysadmin from home
。
答案3
只需使用您最喜欢的编辑器或创建它touch
,但请确保它具有正确的权限。
chmod 400 ~/.ssh/authorized_keys
答案4
是的,这很正常。当您想要添加 ssh 密钥时,只需创建一个即可。