
Я пытаюсь отправить ключи ssh на несколько серверов с сервера jump с помощью скрипта оболочки. Я могу войти только из своего аккаунта ad, а затем переключиться на 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
После создания этого файла вы можете поместить открытый ключ в корневой файл authorized_keys для каждого сервера с помощью ssh-copy-id
команды, показанной ниже. В первый раз, конечно, вам может потребоваться предоставить учетные данные.
Также, по умолчанию, большинство серверов настроены на запрет доступа root по ssh напрямую. Если это так, вам нужно внести больше изменений в sshd_config на каждом сервере.
Теперь просто запустите ssh-copy-id 192.168.122.10
, чтобы скопировать ваш открытый ключ в файл root authorized_keys на сервере. Конечно, замените IP на IP вашего сервера. Повторите для каждого сервера.
После того, как ключ будет присутствовать на каждом сервере, вы сможете ssh some-server-IP
автоматически подключиться к серверу перехода, используя ваш идентификатор пользователя, и установить переадресацию портов для доступа к удаленному серверу в качестве пользователя root.