我尝试将公钥复制到~/.ssh/authorized_keys
Solaris 服务器上的文件中。但失败并显示以下错误消息:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub <USER>@<HOST>
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
<USER>@<HOST>'s password: <PASSWORD>
sh: test: argument expected
这似乎是 Solaris 默认 tcsh shell 的问题。有没有办法让它工作或让 ssh-copy-id 使用 bash?
答案1
tcsh 绝不是 SunOS/Solaris 的“默认”shell。
/bin/sh 是 Solaris 10 及以下版本的默认 shell。/bin/bash 是 Solaris 11 及更高版本的默认 shell。
如果从几个变量初始化前面删除“local”命令,该脚本将与 /bin/ksh 一起正常工作。
答案2
这个相当老了,但是万一有人偶然发现它,这是对 ssh-copy-id 的修复,以便在复制到 Solaris 10 及更早版本时可以工作 - 在 ssh-copy-id 脚本中的这个表达式周围加上双引号:
[ -z "\`tail -1c ${AUTH_KEY_FILE} 2>/dev/null\`" ]