我正在尝试将公共 id_rsa.pub 文件从我的 Mac 发送到我在 Linux 服务器上的主目录中的 ~/.ssh/authorized_keys 目录,这样我就可以在每次不登录的情况下访问。
从我的 Mac 终端我使用这个命令:
cat ~/.ssh/id_rsa.pub | ssh username@remoteserver 'cat >> ~/.ssh/authorized_keys'
如果远程 ~/.ssh 目录已经存在,则此方法有效,否则无效。在这种情况下,我必须先登录到远程服务器,创建 .ssh 目录,然后注销,然后运行上述命令。之后,我无需登录即可 ssh 到远程服务器。
我需要为几十台服务器执行此操作,所以我想知道是否有办法修改上述命令以创建远程 .ssh 目录(如果它不存在)。
谢谢,
道格
利用
ssh-copy-id
通常
ssh-copy-id
会处理不存在的目录或文件。如果可以,请使用它;不要重新发明轮子。没有
ssh-copy-id
(无论出于何种原因)在远程端,您在 shell 中运行命令。运行更多命令。确保额外的命令之前不消耗标准输入
cat
(</dev/null
如果需要,使用)。这里既不使用cd
也不mkdir
使用标准输入,所以这应该工作:笔记:
-p
如果已经作为目录存在,则mkdir
不会抱怨。./.ssh
-m 700
从一开始就设置正确的模式。代码可以改进。我的主要观点是,您不仅限于单个
cat
.