У меня есть большой объем данных для отправки с одного сервера на другой. Я получаю доступ к серверам через ssh, используя закрытый ключ.
Проблема в том, что я не могу использовать этот ключ для файлов scp с одного такого сервера на другой - сервер One не имеет закрытого ключа, которого ожидает сервер Two (только публичная часть), поэтому Two не разрешит доступ с One.
Единственный способ отправить файлы - сначала загрузить их на мой компьютер (слишком медленно), отправить закрытый ключ на один из серверов (в этом случае он, вероятно, не взорвется, но я действительно очень ненавижу такие решения) или создать дополнительные аккаунты только для этого или одного из серверов.
У ssh нет способа разрешить авторизацию сеанса ssh вперед? Это было бы действительно здорово.
Предполагая, что у вас есть один и тот же открытый ключ, присутствующий в ~ / .ssh / authorized_keys на обоих серверах, и что вы запускаете какой-то агент ssh локально, тогда вы можете использовать пересылку агента.
localcomputer$ ssh -o ForwardAgent=yes youruser@server.one
Таким образом, когда вы из server.one запускаете сеанс scp против server.two, аутентификация будет прозрачно обрабатываться в фоновом режиме на вашем локальном компьютере. Обратите внимание на следующее предупреждение, взятое из ssh_config (5)
Пересылку агента следует включать с осторожностью. Пользователи с возможностью обхода файловых разрешений на удаленном хосте (для сокета домена Unix агента) могут получить доступ к локальному агенту через перенаправленное соединение. Злоумышленник не может получить ключевой материал от агента, однако он может выполнять операции с ключами, которые позволяют им аутентифицироваться с использованием идентификаторов, загруженных в агент.
(Короче говоря, в определенной степени вам придется доверять root@server.one.)
На полях:
Если вы отправляете большие объемы данных, вам лучше использовать tar-over-ssh вместо scp. Действительно намного быстрее.