我需要在两台服务器之间build立ssh会话,并且不想让脚本每次都填写用户名和密码。
但是,我似乎无法找出SSH服务器在哪里使用其configuration。
bash-2.05# ssh -V Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f
我在/ etc / ssh /和〜/ .ssh /中都有证书文件。 我只能find一个用于SSH的configuration文件,它位于/ etc / ssh / ssh_config中,但它不包含任何数据(所有内容都被注释掉了)。
有谁知道我怎么能找出证书的存储位置,或者我可以如何导出,以便将其传输到其他服务器? 我希望configuration文件能给我答案,但他们提供的帮助很less。
假设你的意思是在“certificate”的用户级别进行public-key-authentication,并且你使用ssh-keygen创build了默认的位置,他们应该在你的ssh-client可以find的地方。 密钥由私人部分组成,通常存放在~/.ssh/id_rsa ,公共部分存放在~/.ssh/id_rsa.pub 。 最后一个将被转移到远程服务器,通常是~/.ssh/authorized_keys 。
将密钥传输到另一台服务器的最简单方法是在目标机器上使用ssh-copy-id 。 如果您在创build时使用了默认位置,则会自动使用此键。
请注意, /etc/ssh/ssh_config是针对客户端的。 在服务器上,你将不得不看看/etc/ssh/sshd_config 。 在你的设置中,两台服务器都将作为ssh-client和ssh-server,所以你必须在两端都看两个文件。
您需要为将作为脚本的login用户的用户查找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用户到/home/scriptrunner/.ssh/authorized_keys上的/home/scriptrunner/.ssh/authorized_keys中的authorized_keys中)
那么你应该能够使用密钥从serverB执行ssh scriptrunner@serverA ,反之亦然。
您也可以使用ssh-copy-id来执行authorized_keys位。
为了build立与公钥authentication的ssh连接,发起连接的用户需要有一个公钥/私钥对。 在许多Linux发行版中,这些密钥不是默认生成的,必须由用户自己生成(或由pipe理员代为生成)。
如果您以相关用户的身份login,请转至您的主目录并运行
ssh-keygen
接受所有的默认值,并在〜/ .ssh / id_rsa和〜/ .ssh / id_rsa.pub中创build一个新的密钥对。 现在复制公钥并将其粘贴到目标机器上目标用户帐户的〜/ .ssh / authorized_keys文件中。 然后启用目标机器上的公钥authentication(在/ etc / ssh / sshd_config中),你应该很好。
注意 :这个过程中有许多可能的陷阱,当你第一次这样做。 所有的权限必须是正确的,文件必须在正确的位置。 这可能是最好的,如果你按照这样一个HowTo。