Проверено на Linux :Получить все IP-адреса, кроме локального хоста:
ifconfig -a | grep "inet addr:" | grep -v "127.0.0.1" | sed -e "s#addr:##g" | awk '{print $2}'
Вы можете включить переадресацию агента с помощью -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
.