服务器时常需要配置无密码的登录方式,最一般的设置方式如下:
# ssh-keygen
# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"
实这方法已经很简单了,不过我总记不清如何正确拼写 authorized_keys 这个文件名。
还好 Linux 系统里缺省都包含一个名为 ssh-copy-id 的工具:
# type ssh-copy-id
ssh-copy-id is /usr/bin/ssh-copy-id
你用 cat 或者 more 命令看一下就知道 ssh-copy-id 本身其实就是一个 shell 脚本,用法很简单:
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
再也不用记如何拼写 authorized_keys 这个文件名了,是不是很爽,可惜别高兴太早了,ssh-copy-id 有一个很要命的问题,那就是缺省它仅仅支持 SSH 运行在 22 端口的情况,不过实际上出于安全的需要,我们往往都会更改服务器的 SSH 端口,比如说改成 20022 端口,这时候你运行 ssh-copy-id 就会报错了,直接修改 ssh-copy-id 脚本当然可以修正这个问题,但是那样显得太生硬了,实际上还有更好的办法:
# vi ~/.ssh/config
加上内容:
Host server
Hostname ip
Port 20022
如果执行报错
Bad owner or permissions on /home/nagios/.ssh/config
则需要修改权限以符合安全策略
$ cd ~/.ssh
$ chmod 600
你也可以单独只加入 Port 一行配置,那样就是一个全局配置,保存后再运行 ssh-copy-id 命令就不会报错了。
或者
ssh-copy-id -i
~/.ssh/id_rsa.pub “-p 20022 test@192.168.3.2”
或者修改全局的
vi /etc/ssh/ssh_config
Port 20022