我正在尝试使用 shell 脚本从跳转服务器向多个服务器发送 ssh 密钥。我只能从我的广告帐户登录,然后切换到 root,无法直接以 root 身份登录。在这种情况下,我如何将 ssh 密钥发送到需要在 /root/.ssh/authorized-keys 下复制的服务器?
答案1
您不需要成为跳转服务器上的 root 用户即可以 root 身份访问其他服务器。
如果您还没有 ssh 配置文件,请先创建一个。它通常位于~/.ssh/config
(其中 ~ 是 $HOME 的简写)。
您首先需要了解一些信息,即您尝试从跳转服务器访问的服务器的 IP 范围。希望这些 IP 与跳转服务器不在同一子网中。
以下是一个示例:
# save as ~/.ssh/config
CheckHostIP no
StrictHostKeyChecking no
AddKeysToAgent yes
ForwardAgent yes
UserKnownHostsFile /dev/null
# Servers to get to via jump server
# (note their subnet defined by a range using an asterisk, you need to provide)
# This establishes root as login id for every server in the range
# and uses the JumpServer (can leave that name as is) as a proxy.
Host 192.168.122.*
ProxyJump JumpServer
User root
# JumpServer info. Provide its IP or FQDN and your user id
# IP or FQDN set in the HostName; you can leave Host set as JumpServer
# since this is referred to above in ProxyJump line
Host JumpServer
HostName ip-or-fqdn-of-jumpserver
User your-user-id
在上面的示例中,您只需针对您的环境更改 3 项内容:
- 替换
192.168.122.*
为您的服务器 IP 范围 - 替换
ip-or-fqdn-of-jumpserver
为您的跳转服务器 IP 或 FQDN(完全限定域名) - 替换
your-user-id
为用于 ssh 进入的跳转服务器上的用户 ID
创建该文件后,您可以通过以下命令将公钥放入每个服务器的根 authorized_keys 文件中ssh-copy-id
。当然,第一次您可能需要提供凭证。
此外,默认情况下,大多数服务器都配置为禁止直接使用 ssh root 访问。如果是这种情况,您需要在每台服务器上进行更多 sshd_config 更改。
现在只需运行即可ssh-copy-id 192.168.122.10
将您的公钥复制到服务器上的 root authorized_keys 文件中。当然,请用您自己的服务器 IP 替换 IP。对每个服务器重复此操作。
一旦每台服务器上都有密钥,您现在就应该能够ssh some-server-IP
使用您的用户 ID 自动连接到跳转服务器,并建立端口转发以便以 root 身份访问远程服务器。