解决ssh-copy-id复制错误的问题

linux下,可以使用ssh-copy-id命令,把密钥复制到远程主机,以实现无密码登录。
相关用法可以看我另一篇文章:Linux服务器使用密钥登录

ssh-copy-id基本用法如下:

1
ssh-copy-id -i  myid.pub  foo@remotehost

其中,-i是指定密钥文件的具体位置。

但是在实际使用过程中,经常会出现错误,具体如下:

1
2
3
4
  ~ ssh-copy-id -i /xxx/my_key.pub foo@192.168.1.23

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/xxx/my_key': No such file or directory
(to install the contents of '/xxx/my_key.pub' anyway, look at the -f option)

上面的错误提示,意思是找不到密钥文件,但其实密钥文件是存在的。

错误提示还建议使用-f参数来强制写入,经我测试,确实可以正确写入,但是有个大坑要注意:

在使用-f参数时,-f参数一定要写在-i的前面,不然还是报一样的错误,如下:

正确的格式:

1
~ ssh-copy-id -f -i /xxx/my_key.pub foo@192.168.1.23

错误的格式:

1
~ ssh-copy-id -i /xxx/my_key.pub foo@192.168.1.23 -f