我正在尝试将Mac上的公共id_rsa.pub文件发送到Linux服务器上我的主目录中的〜/ .ssh / authorized_keys目录中,以便我无需每次登录即可访问。
在我的Mac Terminal中,我正在使用以下命令:
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
不消耗stdin (</dev/null
如果需要,请使用)。这里既不使用stdin,cd
也不mkdir
使用stdin,因此这应该起作用:
cat ~/.ssh/id_rsa.pub | ssh username@remoteserver '
cd ~/ || exit
mkdir -pm 700 .ssh
cat >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
'
笔记:
-p
mkdir
如果./.ssh
已经存在于目录中,则不会发出任何抱怨。-m 700
从一开始就设置正确的模式。可以改进代码。我的主要观点是,您不仅限于一个人cat
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句