ssh-copy-id使用非默认22端口时_剑次狼_新浪博客

服务器时常需要配置无密码的登录方式,最一般的设置方式如下:



# 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脚本当然可以修正这个问题,但是那样显得太生硬了,实际上还有更好的办法:

28

Pseudo-terminal will not be allocated because stdin is not a

terminal.

ssh: umask 077; test -d .ssh || mkdir .ssh ; cat >>

.ssh/authorized_keys: Name or service not

known

# 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

来源URL:http://blog.sina.com.cn/s/blog_541a3cf10101epzf.html