如何导出SSH的公钥?


12

我需要在两台服务器之间设置ssh会话,并且不想每次都使脚本填写用户名和密码。

但是我似乎无法找出SSH服务器从何处使用其配置。

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

我在/ etc / ssh /和〜/ .ssh /中都有证书文件。我只能在/ etc / ssh / ssh_config中找到一个用于SSH的配置文件,但其中不包含任何数据(所有内容均已注释掉)。

有谁知道我如何知道证书的存储位置,或者如何导出证书以便将其转移到其他服务器?我希望配置文件能给我答案,但是它们几乎没有帮助。

Answers:


17

假设您的意思是通过“证书”在用户级别进行公钥认证,并且使用ssh-keygen默认位置创建它们,那么它们应该位于ssh客户端可以找到它们的位置。密钥由通常存储在中的私有部分~/.ssh/id_rsa和中的公共部分组成~/.ssh/id_rsa.pub。最后一个将必须传输到远程服务器,通常是~/.ssh/authorized_keys

将密钥转移到另一台服务器的最简单方法是ssh-copy-id与目标计算机一起使用。如果在创建时使用了默认位置,则将自动使用此密钥。

注意,那/etc/ssh/ssh_config是给客户的。在服务器上,您将不得不查看/etc/ssh/sshd_config。在您的设置中,两个服务器都将同时用作ssh-client和ssh-server,因此您必须在两端同时查看这两个文件。


得到它的工作。谢谢。我唯一要做的事情是在我的客户端上,我必须指定指向私钥的-i(身份)参数。
克里斯·戴尔

2

您需要为该用户找到ssh公共密钥,该用户将成为脚本的登录用户。

例如,如果我有serverA和serverB,则可以执行以下操作。

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

然后在ServerB上做类似的事情

然后在serverA上,将serverB的scriptrunner用户的公钥注入 /home/scriptrunner/.ssh/authorized_keys

并在serverB上执行相反的操作(使用serverA的scriptrunner用户进入serverB的authorized_keys中/home/scriptrunner/.ssh/authorized_keys

然后,您应该可以 ssh scriptrunner@serverA使用键从serverB进行操作,反之亦然。

您也可以ssh-copy-id用来做authorized_keys位。


1

为了使用公共密钥身份验证建立ssh连接,发起连接的用户需要具有公共/私有密钥对。在许多Linux发行版中,默认情况下不会生成这些密钥,而必须由用户本人(或由管理员代表它们)生成。

如果您以相关用户身份登录,请转到主目录并运行

ssh-keygen

接受所有默认值,然后将在〜/ .ssh / id_rsa和〜/ .ssh / id_rsa.pub中创建一个新的密钥对。现在,复制公共密钥并将其粘贴到目标计算机上目标用户帐户的〜/ .ssh / authorized_keys文件中。然后在目标计算机上(在/ etc / ssh / sshd_config中)启用公钥身份验证,您应该一切顺利。

注意:第一次执行此过程时,可能会有很多陷阱。所有权限必须正确,文件必须放在正确的位置。如果你遵循类似方法文档这也可能是最好的这一个

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.