这是我尝试过的,但出现错误:
$ cat /home/tim/.ssh/id_rsa.pub | ssh tim@just.some.other.server 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Run Code Online (Sandbox Code Playgroud)
Mic*_*zek 84
OpenSSH 附带了一个命令来执行此操作,ssh-copy-id
. 您只需给它远程地址,然后它将您的公钥添加到authorized_keys
远程机器上的文件中:
$ ssh-copy-id tim@just.some.other.server
Run Code Online (Sandbox Code Playgroud)
您可能需要使用该-i
标志在本地机器上定位您的公钥:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tim@just.some.other.server
Run Code Online (Sandbox Code Playgroud)
Mr.*_*key 38
你总是可以做这样的事情:
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
Run Code Online (Sandbox Code Playgroud)
我不确定您是否可以cat
从本地机器进入 ssh 会话。只需按照建议将其移动到 /tmp 即可。
编辑:这正是ssh-copy-id
它的作用。就像迈克尔说的那样。
pab*_*ouk 10
此答案描述了如何使问题中显示的预期方式起作用。
您可以在远程计算机上执行一个 shell 来解释>>
重定向运算符的特殊含义:
ssh tim@just.some.other.server sh -c "'cat >> .ssh/authorized_keys'" < /home/tim/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
重定向操作符>>
通常由 shell 解释。
当您执行时ssh host 'command >> file'
,不保证command >> file
会被 shell 解释。在您的情况下,在没有特殊解释的情况下command >> file
执行而不是shell,并>>
作为参数提供给命令 - 与command '>>' file
在 shell 中运行的方式相同。
某些版本的 SSH (OpenSSH_5.9) 将自动调用远程服务器上的 shell,并在检测到要由诸如;
>
>>
等的 shell 解释的令牌时将命令传递给它。
ssh-copy-id
摘自对原始海报(OP)问题的回答/评论:
ssh <user>@<host> 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
cat ~/.ssh/id_rsa.pub | ssh <user>@<host> 'cat >> ~/.ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
111115 次 |
最近记录: |