Запустите удаленную команду при добавлении ключа к агенту, чтобы запрос парольной фразы не мешал сценарию

Проверено на Linux :Получить все IP-адреса, кроме локального хоста:

ifconfig -a | grep "inet addr:" | grep  -v "127.0.0.1" | sed -e "s#addr:##g" | awk '{print $2}'
1
23.11.2020, 22:38
1 ответ

Вы можете включить переадресацию агента с помощью -A. Это позволит вам подключиться к вашему локальному ssh-agentс удаленного хоста.

ssh -A Host1 ssh Host2 cat remotefile.mp4

Если вы всегда хотите перенаправить своего агента на Host1, вы можете добавить следующее к своему ~/.ssh/config, и тогда вам не нужно указывать -A.

Host Host1
    ForwardAgent yes

Помните о последствиях переадресации агента для безопасности. Из справочной страницы ssh(1):

Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent's UNIX-domain socket) can access the local agent through the forwarded connection. An attacker cannot obtain key material from the agent, however they can perform operations on the keys that enable them to authenticate using the identities loaded into the agent. A safer alternative may be to use a jump host (see -J).

Как указано на справочной странице, в качестве альтернативы можно использовать опцию узла перехода (-J). Это немного менее гибко, но отлично работает, если все, что вы делаете на первом хосте, — это ssh для второго. Чтобы использовать это, мы изменим команду вашего примера следующим образом:

ssh -J Host1 Host2 cat remotefile.mp4

Здесь -J Host1указывает sshподключиться к удаленному хосту(Host2)через переадресацию TCP на Host1.

Если вы всегда хотите подключаться к Host2, используя Host1в качестве узла перехода, вы можете настроить это в своем~/.ssh/config:

Host Host2
    ProxyJump Host1

Тогда вам нужно будет только запустить ssh Host2 cat remotefile.mp4, и sshавтоматически туннелирует это соединение через Host1.

0
18.03.2021, 22:47

Теги

Похожие вопросы