echo {1..5}
расширен в команду echo 1 2 3 4 5
который затем расширен обычным способом. Это нисколько не подобно seq 1 1000000000 >/dev/null
, который никогда не расширяется до команды с очень многими аргументами.
Это больше похоже echo $(seq 1 1000000000)
: Я предполагаю, что это повреждается таким же образом?
Проблема, с которой Вы сталкиваетесь, относится к обработке больших команд, о которых Unix всегда был суетливым, который должен сказать, что это - общая проблема с обработкой командных строк. Это - одна из вещей, которые Perl был записан для фиксации.
Я зарегистрировал бы вежливый и информативный отчет об ошибках так или иначе: это могло бы вызвать интересное обсуждение.
OpenSSH идет с командой, чтобы сделать это, ssh-copy-id
. Вы просто даете ему удаленный адрес, и это добавляет Ваш открытый ключ к authorized_keys
файл на удаленной машине:
$ ssh-copy-id tim@just.some.other.server
Вы, возможно, должны использовать -i
флаг для определения местоположения открытого ключа на локальной машине:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tim@just.some.other.server
Вы могли всегда делать что-то вроде этого:
scp ~/.ssh/id_rsa.pub user@remote.example.com:/tmp/id_rsa.pub
ssh user@remote.example.com
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
Я не уверен, можете ли Вы cat
от локальной машины в ssh сессию. Просто переместите его в/tmp, как предложено.
Править: Это точно что ssh-copy-id
делает. Точно так же, как Michael сказал.
cat
или иначе). То, что Вы описываете, является старомодным путем; ssh-copy-id
рекомендуется, потому что существует меньше риска опечаток или предоставления файлов неправильных полномочий.
– Gilles 'SO- stop being evil'
19.01.2012, 01:19
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
.
– Pablo A
28.01.2018, 04:12
Этот ответ описывает, как сделать намеченный путь показанным в работе вопроса.
Можно выполнить оболочку на удаленном компьютере для интерпретации особого значения >>
оператор перенаправления:
ssh tim@just.some.other.server sh -c "'cat >> .ssh/authorized_keys'" < /home/tim/.ssh/id_rsa.pub
Оператор перенаправления >>
обычно интерпретируется оболочкой.
Когда Вы выполняетесь ssh host 'command >> file'
затем этому не гарантируют это command >> file
будет интерпретироваться оболочкой. В Вашем случае command >> file
выполняется вместо оболочки без специальной интерпретации и >>
был дан команде как аргумент - тот же путь как выполнение command '>>' file
в оболочке.
Некоторые версии SSH (OpenSSH_5.9) автоматически вызовут оболочку на удаленный сервер и передадут команду (команды) ему, когда они обнаружат маркеры, которые будут интерпретироваться оболочкой как ;
>
>>
и т.д.
openssh
предоставляет ssh-copy-id
. Последовательность будет следующей:
Сгенерировать приличный ключ 4k
ssh-keygen -t rsa -b 4096 -f ~ / .ssh / id_rsa4k
Запустите свой ssh-агент и втяните такая информация, как SSH_AGENT_PID
и т. д.
ssh-agent -s> ~ / mysshagent
source ~ / mysshagent
rm ~ / mysshagent
Теперь начните загружать ключи в свой SSH-агент
ssh-add ~ / .ssh / id_rsa4k
Убедитесь, что он загружен
ssh-add -l
ssh-add - L
Это покажет вам, что у вас есть в ssh-agent
Теперь на самом деле SSH к удаленной системе
ssh (скрыто)
Теперь вы можете запустить ssh-copy-id без аргументов:
ssh-copy-id
Это создает ~ / .ssh / authorized_keys
и заполняет основную информацию, требуемую от ssh-agent .
Tuve problemas con ssh -copia -id al elegir otro puerto que no sea 22... así que aquí está mi oneliner con un puerto ssh -diferente (, p. 7572):
ssh yourServer.dom -p7572 "mkdir.ssh; chmod 700.ssh; umask 177; sh -c 'cat >>.ssh/authorized_keys'" <.ssh/id_rsa.pub
Действительно команда the ssh-copy-id
делает именно это(из пакета openssh-client
):
ssh-copy-id user@host
Примечание:host
означает IP-адрес или домен .
Я хотел бы также добавить некоторую дополнительную информацию к этому
1 )Мы можем указать другой порт для SSH на целевом сервере:
ssh-copy-id "-p 8127 user@host"
Примечание:
Порт должен располагаться перед портом user@host
, иначе он не будет разрешен.
2 )Мы можем указать файл с открытым ключом:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
Примечание.:
Опция -i
позволяет указать соответствующее расположение имени в файле, содержащем открытый ключ.
Иногда это может пригодиться, особенно если мы храним его в -нестандартном месте или если на нашем компьютере имеется более одного открытого ключа, и мы хотим указать на определенный.
>>
обрабатывается Вашей оболочкой, и Вы выполняете команду через SSH вместо через оболочку. Его фиксация наличия SSH выполняет оболочку, которая затем выполняет Вашу команду, должен работать отношение – Michael Mrozek♦ 18.01.2012, 22:22ssh-copy-id
не будет работать, правильно? – Abdull 07.06.2016, 18:24